Locked History Attachments


Scripts for data acquisition with paper-based surveys

SDAPS is an open source (GPLv3, LPPL) optical mark recognition (OMR) program. It is written in python and has an integrated workflow with both LibreOffice and LaTeX to create questionnaires.

SDAPS Workflow

With SDAPS you create the questionnaire using either LibreOffice or LaTeX. After this some processing is done to collect the information about the survey (questions, and answers) and a printable PDF is created. The filled out questionnaires only need to be scanned in (example). SDAPS will do the optical mark recognition and can create a PDF report (example) or export the data. Optionally it is possible to manually correct the results using a graphical user interface.

Possible use cases for SDAPS include:

  • anonymous surveys
  • non-anonymous surveys
  • evaluation of lectures
  • automated data input
  • examinations

If you have any questions or comments related to SDAPS (usage, development, or anything else) then the MailingList is a good place to post these. Please consider subscribing to this list if you are thinking about using SDAPS in the future or should you need some assistance. You can also look around on irc #sdaps on freenode (webchat).

For an introduction of how SDAPS is used and what can be done with it you can look at the Tutorial and Documentation. Should you have any further questions about SDAPS you can use the mailing list. If you find any issues, please report them in the Issue Tracker.

Should you find SDAPS useful and use it for any survey or similar, then please consider contributing to the project. A good first start is to subscribe to the mailing list or to join the IRC channel.


  • Open Source Software; use and modify it as you like (subject to the GPLv3+/LPPLv1.3c+)
  • Optical mark recognition (OMR) from scanned data
  • Imports most formats including PDF and even photographs (version 1.1.7)
  • OpenDocument text (ODT) for creating questionnaires

  • LaTeX class for creating questionnaires

  • Supports any paper size
  • Multipage questionnaires, both simplex and duplex printing (up to 9999 pages with "code128" and "qr" style)
  • Different kinds of questions:
    • A mark type question (a score)
    • A choice of many, that may also include freeform fields
    • Freeform fields
    • The LaTeX class also supports more compact matrix configurations for these.
  • Creation of PDF reports for printout
  • Export of data to CSV files for further analysis (excluding image data)
  • Import of additional results from other sources.
    With this it is for example possible to merge data aquired via a webpage at a later point.

  • A GUI application to check the recognition and correct errors
  • Written in Python using a modular and extensible design


Overview of Changes in SDAPS 1.1.9 -- 22.01.2015

Mostly a bugfix release.

Important changes:

  • csv: PNG export for complete questions
  • Fix various encoding issues (#59, #61)
  • dynamic kfill size for barcode detection
  • Fix LaTeX search path regression (see #11)

New and updated languages:

  • Spanish

Overview of Changes in SDAPS 1.1.8 -- 07.12.2014

Important changes:

  • recognize: prevent division by zero error
  • recognize: try barcode detection both with and without kfill
  • recognize: ignore data from previous run
  • csv: Add support to specify delimiter
  • csv, ids: allow output to any file including stdout
  • gui: properly escape all strings

New and updated languages:

  • German

Overview of Changes in SDAPS 1.1.7 -- 02.11.2014

The most important change in this release is that the import of image data has been simplified.

SDAPS can now do an image format conversion automatically as part of the "add" command, removing the necessity of using "convert" or some other external method to preprocess the images. As before, this feature requires OpenCV.

Another change is that SDAPS now imports PDF files directly. If a PDF file contains a full page image (i.e. a scanned document) then this image is used directly to prevent image quality loss due to resampling. This feature requires poppler to be installed.

Overall these changes make it a lot easier to work with different scanners. It is now only neccessary to pass the "--convert" option to the "add" command to add files that are not already in the expected format.

Important changes:

  • stamp: Fix re-stamping all IDs
  • add: Implement conversion feature (--convert option)

  • convert: Add support for reading PDF files

New and updated languages:

  • German
  • Portuguese (Brazil)

Overview of Changes in SDAPS 1.1.6 -- 25.10.2014

This release adds support to use QR code instead of Code-128. The main advantage is that QR-Code contains redundancy so that recognition should be more reliable even with bad scans. Another important change is that it is now possible to select different modes for checkbox detection without modifying the source code. This should simplify the usage of SDAPS in certain cases.

Feedback for optimizing the different modes is of course welcome. The thresholds have not been tested extensively.

Important changes:

  • Support for QR-Code based IDs has been added ("qr" style)
  • csv export: Allow export of freeform textboxes as images
  • Updated example and testcase for newer multicol versions
  • tex: Fix writing sdaps file for all macros.
  • Allow selection of different checkbox detection modes.

New and updated languages:

  • Portoguese (copy of Portoguese (Brazil))
  • German

Overview of Changes in SDAPS 1.1.5 -- 21.09.2014

Important changes:

  • report: Fix import of PIL (Florian Rinke)
  • odt: Fix annotation on setup failure
  • gui: Fix memory leak
  • latex: Small improvements to class usability
  • translations: Fix LaTeX dictionary names.

New and updated languages:

  • Finnish
  • German

Overview of Changes in SDAPS 1.1.4 -- 04.08.2014

This is mostly a bugfix and translations release, as there was still some fallout from the refactoring done in the last release. Thanks to everyone who submitted patches to fix these!

Important changes:

  • dependency, build, and import fixes (#44, #46, and more)
  • fix layout changes in LaTeX and example (introduced in 1.1.2)
  • report: fix non A4 paper sizes (issue #41)

New and updated languages:

  • Portuguese (Brazil)
  • Spanish
  • German

Overview of Changes in SDAPS 1.1.3 -- 29.05.2014

With this release SDAPS has been restructured internally. There are two reasons for doing this. The first is to improve the API which simplifies the usage of it in custom scripts. Another point is that the old code was incompatible with the import handling of python 3. So doing this change is also a prerequisite for a future port to python 3.x.

Other changes include:

  • GUI: Fix an offset error with new GTK+ versions
  • GUI: Improved keyboard navigation (issue #30)
  • GUI: Improved mouse handling and overlay drawing
  • GUI: Show the questionnaire ID on the right side
  • GUI: Sort images by page number
  • LaTeX: Improved unicode support
  • LaTeX: Fixed precision issues in report generation
  • LaTeX: Fixed some whitespace issues in the LaTeX class
  • ODT: When stamping a single document, keep forms intact
  • reorder: Fix reordering of simplex documents
  • recognize: Slight changes in the OMR heuristics.
  • Fixed issues in the upgrade routine

New and updated translations:

  • German
  • Spanish

Similar Tools

Some similar free software projects in no specific order: