Work with any document generated using queXML
Allow for an unlimited number of verifiers to work at a time (given hardware/network constraints)
Produce data in ASCII format with a DDI description file
Work with the Firefox browser as a client
PHP 4 or 5
MySQL 5 with the InnoDB Engine (currently uses views and transactions)
Ghostscript version 8
Firefox browser with a screen size of 1024x768 or larger
Tesseract OCR – For reading text or number fields
ImageMagick – For converting images to work with tesseract
Security warning: The default installation of queXF has no security enabled. This package is designed to be run on a trusted internal network. Although with directory level security it should be quite safe.
Extract queXF to your web server root
Enable security (skip this only if you deem it safe):
Restrict the root directory to to a group of trusted users
Restrict the Admin directory to a trusted user using directory based authentication
Create the queXF database
It is recommended to also create a user with privileges only to the queXF database
Create the tables using the script in the database directory of the package
Modify the configuration file
Edit the file config.inc.php in the root directory of the package
Make sure the path to ADOdb is correct
Make sure the database parameters are correct
If you wish to enable OCR, make sure you set the path to tesseract (see and convert from the ImageMagick package. Then set OCR_ENABLED to true
Test your configuration settings by running the admin/testconfig.php script
All forms created using queXML should work with queXF.
If you have a customised form, queXF requires the following to operate:
A unique interleaved 2 of 5 barcode in the top right hand corner of each page
Please note that the barcode must be unique for each page across all forms in the queXF system.
A vertical and horizontal line in each corner of the page (for alignment)
Boxes to be filled in should be square or rectangular (not circular)
Please note that the author has not tested a form that was not created in queXML, therefore can make no guarantees that it will work (Although it should). If you have any forms that you have trouble with (that comply with the 3 points above), please send in an example for testing.
Please note that queXF has only been tested on a LAMP system (Linux, Apache, MySQL and PHP) and this guide assumes the reader is using a similar system.
These tasks are accessible from the /admin directory of the package (eg: /quexf/admin)
It is best to import a form that is scanned in the same way as the completed forms will be scanned in. Therefore if you have used queXML to produce a form like this example, scan it using your scan software to a PDF file like this example.
Go to the page: Import a new form from a PDF file (new.php) and select the pdf file to import. (An example is test_blank.pdf in the doc directory). Enter a description such as 'test questionnaire'.
You should see a result such as:
BARCODE: 00000100
BARCODE: 00000102
BARCODE: 00000103
SUCCESSFULLY INSERTED NEW QUESTIONNAIRE
If you try to import the same form again, or another form that has a page with the same barcode as a previous form, you will get an error like this:
BARCODE: 00000100
BARCODE: 00000102
BARCODE: 00000103
FAILED to insert new questionnaire. Could have conflicting page id's
This is because queXF identifies each page by the barcode, therefore there cannot be a duplicate.
'Banding' a form is the act of telling queXF where the fields are that respondents will fill in. queXF is able to detect single choice and multiple choice check boxes, text and number boxes and also VAS (Visual Analog Scale) question types.
Banding a form works in two stages, firstly identifying the fields, then assigning the fields a name and type. Identifying the field is done by clicking once on the form at the upper left corner of the field, outside the field boxes, then clicking for a second time in the bottom right corner of the field, outside the field boxes. queXF will then identify the boxes within the field and display them in red. The second task is to click on the boxes to bring up a window to assign the field name and type, or delete the field if it has been detected unsatisfactorily.
Banding is done from the banding page.
Here is a run down of how to band using pictures
Once the form has been banded, go back to the main banding page and select 'reorder variables'. This will automatically order the form from top to bottom, left to right so that when the form is verified, it will go through in a logical order
Users must be added to the system that match the underlying authentication system from the add users page.
Once the users have been added, assign the users you want to work on each form
Once the form has been banded, go to the import a directory page to import PDF forms to the system. Make sure you know the full path to where the files are stored on the web server, and that they are read accessible by the web server process. There are 2 filled example forms in the 'filled' directory of the doc directory.
If queXF is stored on the server here: /var/www/quexf – then enter: /var/www/quexf/doc/filled to process the forms in the filled directory.
Please note that processing forms does take some time so please be patient.
The missing pages form allows you to manually tell queXF what page has been scanned where queXF fails to detect it automatically. queXF sometimes fails to detect a page if the barcode has been modified or scanned in poorly.
The page on the left is the 'missing page' and the page on the right is the page that queXF thinks is a match. If queXF does not produce any matches, then the page is probably blank, or has been scanned in twice for that form. In that case, press the 'delete' link to delete the page from the system. If the page on the left has useful information on it, queXF should produce a list of possible pages on the right. If the page matches, press the 'accept' link. If the page does not match, there may be more available using the page numbers on the top of the right hand image. Once you have found the correct one, press the 'accept' link.
The output data form is used to export data from queXF. It will only export the data that a verifier has confirmed, not what has been automatically detected by the system.
If you have PHP 5 and you would like to use the output to DDI function, you will have to go here: http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/ and download the PHP script and store it in the functions directory of queXF (see functions.output.php for the include statement)
Verification is where an operator runs through each question in a questionnaire to confirm that queXF has correctly guessed what has been written on the form. If there is a discrepancy, the operator can correct it.
Each question is run through. The question that the operator is working on will be highlighted orange. The guessed answer will be shown in green. The operator may use the mouse to select/deselect an answer by clicking on the appropriate box, or may use the keyboard as shown below:
Keys for single choice and multiple choice question types:
Enter: Accept the current answer and move to the next question
Ctrl: Move back to the previous question
1-9: Select/Deselect the 1st,2nd...9th choice
left, up: Move the cursor to the next choice left or up
right, down: Move the cursor to the next choice right or down
Keys for text and number question types:
Enter: Accept the current answer
Ctrl: Move back to the previous question
Backspace: Move back a box
Space bar: Leave the next box blank