~adamzammit/quexf/main

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
queXF 1.20.8 - Changes since 1.20.7

*Fixed issue with barcode detection in monochrome scans
*Fixed issue with focus on Chrome browsers
*Fixes issue lp:1895071 - Deprecated message regarding constructor name

queXF 1.20.7 - Changes since 1.20.6

*Fixed issue: Fix to support ADODB 5.21
*Fixed issue: Fix some warnings

queXF 1.20.6 - Changes since 1.20.5

*New feature: Align page feature
*New feature: Initial support for DB over SSL

*Fixed issue: Remove uneccesary session2 table
*Fixed issue: Multiple choice answers not imported to limesurvey
*Fixed issue: Not detecting longest line if it takes up entire box detection area

queXF 1.20.5 - Changes since 1.20.4

*Fixed issue: docker-compose had missing default values
*Fixed issue: Duplicate imports were allowed in some cases (fix  by setting pfid early)
*Fixed issue: Only admin operator could be wiped disallowing access
*Fixed issue: Operator usernames with spaces were allowed
*Fixed issue: Empty passwords were removing users

queXF 1.20.4 - Changes since 1.20.3

*New feature: Allow adding/updating users directly to HTPASSWD file via HTPASSWD_PATH define
*New feature: Added delete form function

*Fixed issue: Error that DEFAULT_LOCALE was not set
*Fixed issue: Malformed SQL for unverified data output
*Fixed issue: Box fills not available directly from Docker container

queXF 1.20.3 - Changes since 1.20.2

*Fixed issue: Trimming too much from barcode
*Fixed issue: Converting to monochrome timing out in large questionnaires
*Fixed issue: lp:1721420 Barcode not detected where close to corner edge line

queXF 1.20.2 - Changes since 1.20.1

*New feature: Read files in alpha order instead of filesystem order (for process)

*Fixed issue: Verification failing if TMP box groups existed after banding
*Fixed issue: Alt Gr key jumping back when verifying
*Fixed issue: Display page width not in config file

queXF 1.20.1 - Changes since 1.20.0

*Improve box edge detection by reducing search area
*Fixed issue: Doule entry labels (see: https://github.com/ACSPRI/queXF/issues/1)
*Make more variables available for updating in config.inc.php

queXF 1.20.0 - Changes since 1.19.1

*New Feature: Double entry verification

*Fixed bug: Too many variables to post on Successful form input page
*Fixed bug: Order of form input page incorrect

*Database changes required:

ALTER TABLE `questionnaires` ADD `double_entry` TINYINT( 1 ) NOT NULL DEFAULT '0';
ALTER TABLE `forms` ADD `assigned_vid2` SMALLINT( 5 ) NULL DEFAULT NULL ,
ADD `assigned2` DATETIME NULL DEFAULT NULL ,
ADD `completed2` DATETIME NULL DEFAULT NULL ;

queXF 1.19.1 - Changes since 1.19.0

*New feature: Integration with newer version of Limesurvey (> 2.0) - Thanks Benedikt!

*Fixed bug: Can't import PDF files with uppercase extension

queXF 1.19.0 - Changes since 1.18.2

*New feature: Refer to supervisor function
*New feature: Review of results overlay function
*New feature: Web based upload function

*Directory changes required:

mkdir scans
chown www-data:www-data scans
Use .htaccess to protect the uploads and scans directory

Example .htaccess file:
order deny,allow
deny from all

*Database changes required:

CREATE TABLE IF NOT EXISTS `supervisorquestionnaire` (
  `vid` smallint(5) unsigned NOT NULL,
  `qid` int(10) unsigned NOT NULL,
  PRIMARY KEY (`vid`,`qid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

queXF 1.18.2 - Changes since 1.18.1

*Added support for PHP 7 and MySQL 5.7
*Fixed bug: Can't search by Varname

*Database changes required (only if support for Mysql 5.7 required):

ALTER TABLE boxgroupstype MODIFY COLUMN sortorder INT(11) NOT NULL DEFAULT '1';

queXF 1.18.1 - Changes since 1.18.0

*New feature: Allow for gaps in boxes due to dithering (default width is 3 pixels)
*New feature: Add filename to output
*New feature: Import images as grayscale to avoid Ghostscripts dithering 
*New feature: New configuration item IMAGE_THRESHOLD to determine cutoff to monochrome
*New feature: Allow for barcode/OCR fields to be verified

*Fixed bug: Set default output width of text field to 1024
*Fixed bug: Update variable width automatically when editing labels
*Fixed bug: Update box detection to handle minimum width better 
*Fixed bug: Add UTF-8 encoding for correct translations

*Updated translations - thank you for contributing!

queXF 1.18.0 - Changes since 1.17.0

*New Feature: Don't use manual page setup by default as doesn't handle page scaling
*New Feature: Variable labelling when banding

*Fixed Bug: lp:1475507 Manual page setup doesn't take into account scaling of scanned document
*Fixed Bug: lp:1392161 Page setup not automatically populated on form import
*Fixed Bug: Multiple choice output of variable labels to PSPP/SPSS 
*Fixed Bug: Better handle barcodes read as text
*Fixed Bug: Missing php tag

*Updated translations: Thank you for the recent Russian translation!

*Database changes required:

ALTER TABLE `pages` ADD `usepagesetup` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `BR_HORI_BRY`;

queXF 1.17.0 - Changes since 1.16.0

*New Feature: Update banding to allow for the merging of box groups (select over existing boxgroups to merge) and the creation of free text boxes on empty space
*New Feature: DELETE_ON_VERIFICATION will delete system generated data on verification to keep the database lean
*New Feature: Box edge detection as well as corner edge detection
*New Feature: OCR_ENABLED can be set to allow for form OCR using tesseract (can use as page identifiers or just to read printed text)
*New Feature: Secondary position for a form barcode can be defined in the config file

*Fixed Bug: Give error message if GS 9.10 installed which has bug - Added reference to bug lp:1328917 in testconfig
*Fixed Bug: ICR Improvements (Thanks to Damien Zammit) - Updated detection algorithm -  Reduce narrowness in aspect ratio when thinning
*Fixed Bug: lp:1386971 ICR reject or reassign an image when manual training
*Fixed Bug: ICR - Selecting all images at once exhausts memory
*Fixed Bug: Image not displaying when zoomed and not in database
*Fixed Bug: lp:1388658 Training ICR includes unverified images
*Fixed Bug: Replace short tags with full php tags

*Database changes required:

ALTER TABLE `pages` ADD `VERT_WIDTH_BOX` INT NOT NULL DEFAULT '54',
ADD `HORI_WIDTH_BOX` INT NOT NULL DEFAULT '54';


queXF 1.16.0 - Changes since 1.15.0

*New Feature: Verification - replaced GET to submit with POST and autofocus to assign button for faster form submission
*New Feature: Allow for images from scanned forms to be stored as files instead of in the database
*New Feature: Don't save NULL/empty values in database to save space

*Fixed Bug: Form templates listed in ascending order so newer forms harder to access - reversed
*Fixed Bug: Long text fields not verifying
*Fixed Bug: Database structure inefficent 

*Filesystem changes required:

Create a new directory called "images" that the web server process has write access to

*Database changes required:

ALTER TABLE `boxes` CHANGE `bid` `bid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `pid` `pid` INT UNSIGNED NOT NULL ,
CHANGE `bgid` `bgid` INT UNSIGNED NOT NULL;

ALTER TABLE `boxgroupstype` CHANGE `bgid` `bgid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `btid` `btid` TINYINT UNSIGNED NOT NULL ,
CHANGE `width` `width` INT UNSIGNED NOT NULL ,
CHANGE `pid` `pid` INT UNSIGNED NOT NULL ,
CHANGE `sid` `sid` INT UNSIGNED NULL DEFAULT NULL ;

ALTER TABLE `boxgrouptypes` CHANGE `btid` `btid` TINYINT UNSIGNED NOT NULL ;

ALTER TABLE `clientquestionnaire` CHANGE `cid` `cid` INT UNSIGNED NOT NULL ,
CHANGE `qid` `qid` INT UNSIGNED NOT NULL ;

ALTER TABLE `clients` CHANGE `cid` `cid` INT UNSIGNED NOT NULL AUTO_INCREMENT ;

ALTER TABLE `formboxes` CHANGE `bid` `bid` INT UNSIGNED NOT NULL ,
CHANGE `fid` `fid` INT UNSIGNED NOT NULL ,
CHANGE `filled` `filled` FLOAT NOT NULL ;

DELETE FROM `formboxverifychar` WHERE val IS NULL or val = ' ' or val = '';

DELETE FROM `formboxverifytext` WHERE val IS NULL or val = ' ' or val = '';

ALTER TABLE `formboxverifychar` CHANGE `vid` `vid` SMALLINT UNSIGNED NOT NULL ,
CHANGE `bid` `bid` INT UNSIGNED NOT NULL ,
CHANGE `fid` `fid` INT UNSIGNED NOT NULL;

ALTER TABLE `formboxverifychar` DROP PRIMARY KEY;

ALTER TABLE `formboxverifychar` ADD `fbvcid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;

ALTER TABLE `formboxverifychar` ADD INDEX ( `bid` );

ALTER TABLE `formboxverifychar` ADD INDEX ( `fid` );

ALTER TABLE `formboxverifychar` ADD INDEX ( `vid` );

ALTER TABLE `formboxverifytext` CHANGE `vid` `vid` SMALLINT UNSIGNED NOT NULL ,
CHANGE `bid` `bid` INT UNSIGNED NOT NULL ,
CHANGE `fid` `fid` INT UNSIGNED NOT NULL ;

ALTER TABLE `formboxverifytext` DROP PRIMARY KEY;

ALTER TABLE `formboxverifytext` ADD `fbvtid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;

ALTER TABLE `formboxverifytext` ADD INDEX ( `bid` );

ALTER TABLE `formboxverifytext` ADD INDEX ( `fid` );

ALTER TABLE `formboxverifytext` ADD INDEX ( `vid` );

ALTER TABLE `formpagenote` CHANGE `fpnid` `fpnid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `fid` `fid` INT UNSIGNED NOT NULL ,
CHANGE `pid` `pid` INT UNSIGNED NOT NULL ,
CHANGE `vid` `vid` SMALLINT UNSIGNED NOT NULL ;

ALTER TABLE `formpages` CHANGE `fid` `fid` INT UNSIGNED NOT NULL ,
CHANGE `pid` `pid` INT UNSIGNED NOT NULL ,
CHANGE `offx` `offx` SMALLINT NULL DEFAULT NULL COMMENT 'Offset X value',
CHANGE `offy` `offy` SMALLINT NULL DEFAULT NULL COMMENT 'Offset Y value',
CHANGE `costheta` `costheta` FLOAT NULL DEFAULT NULL ,
CHANGE `sintheta` `sintheta` FLOAT NULL DEFAULT NULL ,
CHANGE `scalex` `scalex` FLOAT NULL DEFAULT NULL ,
CHANGE `scaley` `scaley` FLOAT NULL DEFAULT NULL ,
CHANGE `centroidx` `centroidx` FLOAT NULL DEFAULT NULL ,
CHANGE `centroidy` `centroidy` FLOAT NULL DEFAULT NULL ,
CHANGE `width` `width` SMALLINT UNSIGNED NOT NULL DEFAULT '0',
CHANGE `height` `height` SMALLINT UNSIGNED NOT NULL DEFAULT '0';

ALTER TABLE `formpages` DROP PRIMARY KEY;

ALTER TABLE `formpages` ADD `fpid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;

ALTER TABLE `formpages` ADD UNIQUE (
`fid` ,
`pid`
);

ALTER TABLE `forms` CHANGE `fid` `fid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `qid` `qid` INT UNSIGNED NOT NULL ,
CHANGE `pfid` `pfid` INT UNSIGNED NULL DEFAULT NULL ,
CHANGE `assigned_vid` `assigned_vid` SMALLINT UNSIGNED NULL DEFAULT NULL ,
CHANGE `done` `done` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0',
CHANGE `rpc_id` `rpc_id` INT UNSIGNED NULL DEFAULT NULL ;

ALTER TABLE `forms` ADD `assigned` DATETIME NULL ,
ADD `completed` DATETIME NULL ;

ALTER TABLE `missingpages` CHANGE `mpid` `mpid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `fid` `fid` INT UNSIGNED NOT NULL ;

ALTER TABLE `ocrkb` CHANGE `kb` `kb` INT UNSIGNED NOT NULL AUTO_INCREMENT ;

ALTER TABLE `ocrkbboxgroup` CHANGE `btid` `btid` TINYINT UNSIGNED NOT NULL ,
CHANGE `kb` `kb` INT UNSIGNED NOT NULL ,
CHANGE `qid` `qid` INT UNSIGNED NOT NULL ;

ALTER TABLE `ocrkbdata` CHANGE `kb` `kb` INT UNSIGNED NOT NULL ;

ALTER TABLE `ocrprocess` CHANGE `fid` `fid` INT UNSIGNED NOT NULL ,
CHANGE `bid` `bid` INT UNSIGNED NOT NULL ,
CHANGE `vid` `vid` SMALLINT UNSIGNED NOT NULL ,
CHANGE `kb` `kb` INT UNSIGNED NOT NULL ;

ALTER TABLE `ocrtrain` CHANGE `ocrtid` `ocrtid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `kb` `kb` INT UNSIGNED NOT NULL DEFAULT '1',
CHANGE `fid` `fid` INT UNSIGNED NOT NULL ,
CHANGE `vid` `vid` SMALLINT UNSIGNED NOT NULL ,
CHANGE `bid` `bid` INT UNSIGNED NOT NULL ;

ALTER TABLE `pages` DROP `pidentifierbgid`;

ALTER TABLE `pages` CHANGE `pid` `pid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `qid` `qid` INT UNSIGNED NOT NULL ,
CHANGE `rotation` `rotation` FLOAT NOT NULL DEFAULT '0' COMMENT 'rotation of image in radians';

ALTER TABLE `process` CHANGE `process_id` `process_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `type` `type` TINYINT UNSIGNED NOT NULL DEFAULT '1';

ALTER TABLE `process` DROP `data`;

ALTER TABLE `processforms` CHANGE `pfid` `pfid` INT UNSIGNED NOT NULL AUTO_INCREMENT ;

ALTER TABLE `process_log` CHANGE `process_log_id` `process_log_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `process_id` `process_id` INT UNSIGNED NOT NULL ;

ALTER TABLE `questionnaires` CHANGE `qid` `qid` INT UNSIGNED NOT NULL AUTO_INCREMENT ;

ALTER TABLE `sections` CHANGE `sid` `sid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `qid` `qid` INT UNSIGNED NOT NULL ;

ALTER TABLE `verifierquestionnaire` CHANGE `vid` `vid` SMALLINT UNSIGNED NOT NULL ,
CHANGE `qid` `qid` INT UNSIGNED NOT NULL ;

ALTER TABLE `verifiers` CHANGE `vid` `vid` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT ,
CHANGE `currentfid` `currentfid` INT UNSIGNED NULL DEFAULT NULL ;

UPDATE `forms` as f, worklog as w
SET f.assigned = w.assigned, f.completed = w.completed
WHERE f.fid = w.fid;

DROP TABLE `worklog` ;

queXF 1.15.0 - Changes since 1.14.0

*Fixed Bug: lp:1316861 Duplicate forms can not be easily deleted
*New feature: Added single choice automatic verification

queXF 1.14.0 - Changes since queXF 1.13.6

*New Feature: Page edges detection validated and corrected if in error see: https://blueprints.launchpad.net/quexf/+spec/page-alignment-improvements
*Added DEBUG definition for additional output

queXF 1.13.6 - Changes since queXF 1.13.5

*Fixed Bug: lp:1248647 - problem with temp dir that includes spaces
*New feature: Added "Accept page" function to accept what is currently on this page without verifiying everything one by one
*Translations: Updated from Launchpad. Thanks to everyone who contributed!

queXF 1.13.5 - Changes since queXF 1.13.4

*New feature: Added remain to verify status by questionnaire
*New feature: Patch from John Milner to better handle dithered barcodes
*New feature: Added a CSV output where named fields are merged (CSV Merged)
*New feature: Added junk detection to barcode to improve recognition
*Fixed Bug: Verifer using GET to submit instead of POST
*Fixed Bug: Move default corner edges to 10 pixels from edge
*Fixed Bug: Allow importing of files with a space in the filename
*Fixed Bug: Manual ICR training displays images randomly on the page
*Fixed Bug: Listing failed files uses GET instead of POST and goes to successful files on submission
*Fixed Bug: Pagetest causing error at image boundary
*Fixed Bug: Reference to non existent image in CSS
*Fixed Bug: Content length causing download problems on some setups
*Fixed Bug: Error in CSV output for labelled Multiple choice questions (always returned as selected) 
*Fixed Bug: Missing XHTML header in modifybox.php
*Translations: Updated from Launchpad - Thank you again!

queXF 1.13.4 - Changes since queXF 1.13.3

*New feature: Can edit/add values and labels to boxes by mousing over them when banding
*Fixed Bug: Missing pages not completely processed
*Fixed Bug: Banding file not importing where no sections defined
*Fixed Bug: Output to PSPP messy and variable names can be non unique
*Fixed Bug: Page width selection can go over edge of page by 1 pixel causing notices/errors
*Translations: Updated from Launchpad - Thank you (especially to the Spanish translators)

queXF 1.13.3 - Changes since queXF 1.13.2

*New feature: Page compatability test to see if your form is compatible with queXF (also shows up if importing a new form fails)
*Fixed Bug: Banding information remained in database when form deleted
*Fixed Bug: Labels/values of 0 ignored/incorrecty replaced in output
*Translations: Updated translations from Launchpad and added build/move script

queXF 1.13.2 - Changes since queXF 1.13.1

*New feature: Use PAGE_GUIDE_X_PORTION and PAGE_GUIDE_Y_PORTION instead of defining bounding boxes for each corner line
*Fixed Bug: Data not downloading properly on some browsers - Removed content length from header

queXF 1.13.1 - Changes since queXF 1.13.0

*New feature: Added "Pages missing from scan" functions to allow for forms with pages missing to be rescanned
*New feature: Added config directive VERIFY_WITH_MISSING_PAGES (default: false) so forms with missing pages won't be assigned to be verified by default
*New feature: Added example ICR databases
*Fixed Bug: Renamed missing pages to "undetected pages" 
*Fixed Bug: Displays page properly when page is missing from scan

queXF 1.13.0 - Changes since queXF 1.12.2

*New feature: Automatically update queXS Limesurvey database with queXF form when verified (allow for a single dataset of data collected via paper, the web and CATI)
*Fixed Bug: Scale and rotation did not correctly handle case where the scale was exactly 0 and rotation exactly 0
*Fixed bug: CSV output from text/numeric (not long text) elements were ignoring internal spacing
*Fixed bug: full text elements were not being removed when reverifying a form
*Fixed bug: Fixed width output updated to handle where code width is greater than the string length of the number of categories
*Fixed bug: PSPP output updated to fix where variables start with a number (append a V) and to handle where category variables are strings instead of numeric

Database changes:

ALTER TABLE `questionnaires` ADD `rpc_server_url` TEXT NULL COMMENT 'XML RPC server to send verified data to';
ALTER TABLE `questionnaires` ADD `rpc_username` TEXT NULL , ADD `rpc_password` TEXT NULL ;
ALTER TABLE `questionnaires` ADD `limesurvey_sid` INT( 11 ) NULL ;
ALTER TABLE `forms` ADD `rpc_id` INT NULL ;
DROP TABLE `differences` ;

queXF 1.12.2 - Changes since queXF 1.12.1

*Fixed Bug: Don't list box groups that have no boxes attached to them when verifying as it breaks it
*Fixed Bug: Removed <p> tag from messages as making log look too big
*Fixed Bug: divide by zero warning caused when formpages doesn't have a width set
*Fixed Bug: verification of text fields with apostrophe would not insert in to database

queXF 1.12.1 - Changes since queXF 1.12.0

*Fixed Bug: Global $n8 causing ICR thinzs_np function to fail when guessing characters

queXF 1.12.0 - Changes since queXF 1.11.3

*New feature: Enabled ICR (Intelligent Character Recognition) and added training features (config directive: ICR_ENABLED)
*New feature: Allow the import and export of ICR Knowledge Bases (KB) for sharing
*New feature: Process log is done on line by line datestamped basis instead of text update
*New feature: Added output of corner edge detection area elements to queXF banding XML
*Deprecated: Removed old OCR stuff with Tesseract

Database changes:

ALTER TABLE `formboxverifychar` CHANGE `val` `val` CHAR( 1 ) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL;
ALTER TABLE `formboxverifychar` ADD INDEX ( `val` );
ALTER TABLE `ocrtrain` ADD `kb` INT( 11 ) NOT NULL DEFAULT '1' AFTER `ocrtid` ;
ALTER TABLE `process` ADD `type` INT( 11 ) NOT NULL DEFAULT '1' AFTER `process_id`;

CREATE TABLE IF NOT EXISTS `ocrkbboxgroup` (
  `btid` int(11) NOT NULL,
  `kb` int(11) NOT NULL,
  `qid` int(11) NOT NULL,
  PRIMARY KEY  (`btid`,`kb`,`qid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `ocrprocess` (
  `ocrprocessid` int(11) NOT NULL auto_increment,
  `fid` int(11) NOT NULL,
  `bid` int(11) NOT NULL,
  `vid` int(11) NOT NULL,
  `val` char(1) character set utf8 collate utf8_bin NOT NULL,
  `kb` int(11) NOT NULL,
  PRIMARY KEY  (`ocrprocessid`),
  KEY `kb` (`kb`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `process_log` (
  `process_log_id` bigint(20) NOT NULL auto_increment,
  `process_id` bigint(20) NOT NULL,
  `datetime` datetime NOT NULL,
  `data` text collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`process_log_id`),
  KEY `process_id` (`process_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


queXF 1.11.3 - Changes since queXF 1.11.2

*Fixed Bug: testconfig failing where options are given to GS
*Fixed Bug: duplicate barcode data output if not first element

queXF 1.11.2 - Changes since queXF 1.11.1

*Fixed Bug: CSV output where barcode/longtext not outputting if first element in data
*Fixed Bug: testconfig script did not appear in index and failed as not referencing lang.inc.php
*New feature: testconfig now default default page and tests for directory based authentication and common settings

queXF 1.11.1 - Changes since queXF 1.11.0

*Fixed Bug: Verification boxes appear in wrong spot when original page form size differs to scan

queXF 1.11.0 - Changes since queXF 1.10.2

*Fixed Bug: Cannot verify when barcode selected on page
*Fixed Bug: Barcode tolerance is set to as close as possible

*Added new feature: Page setup now on a form by form basis - only requirement
is that the area of a page where a barcode belongs is specified 
(see BARCODE_TLX_PORTION, BARCODE_TLY_PORTION..etc), and that the
barcode length (see BARCODE_LENGTH_PID) is specified.

Once queXF detects the barcode it uses the stored page location details to
determine the page edges.

Page setup is now part of the form importation process.

Here are the changes required to the database from the previous version:

ALTER TABLE `formpages` ADD `width` INT( 11 ) NOT NULL DEFAULT '0',
ADD `height` INT( 11 ) NOT NULL DEFAULT '0';

ALTER TABLE `pages` ADD `width` INT( 11 ) NOT NULL DEFAULT '2480',
ADD `height` INT( 11 ) NOT NULL DEFAULT '3508',
ADD `TL_VERT_TLX` INT( 11 ) NOT NULL DEFAULT '54',
ADD `TL_VERT_TLY` INT( 11 ) NOT NULL DEFAULT '90',
ADD `TL_VERT_BRX` INT( 11 ) NOT NULL DEFAULT '390',
ADD `TL_VERT_BRY` INT( 11 ) NOT NULL DEFAULT '603',
ADD `TL_HORI_TLX` INT( 11 ) NOT NULL DEFAULT '54',
ADD `TL_HORI_TLY` INT( 11 ) NOT NULL DEFAULT '60',
ADD `TL_HORI_BRX` INT( 11 ) NOT NULL DEFAULT '669',
ADD `TL_HORI_BRY` INT( 11 ) NOT NULL DEFAULT '384',
ADD `TR_VERT_TLX` INT( 11 ) NOT NULL DEFAULT '2010',
ADD `TR_VERT_TLY` INT( 11 ) NOT NULL DEFAULT '81',
ADD `TR_VERT_BRX` INT( 11 ) NOT NULL DEFAULT '2433',
ADD `TR_VERT_BRY` INT( 11 ) NOT NULL DEFAULT '639',
ADD `TR_HORI_TLX` INT( 11 ) NOT NULL DEFAULT '1770',
ADD `TR_HORI_TLY` INT( 11 ) NOT NULL DEFAULT '66',
ADD `TR_HORI_BRX` INT( 11 ) NOT NULL DEFAULT '2433',
ADD `TR_HORI_BRY` INT( 11 ) NOT NULL DEFAULT '387',
ADD `BL_VERT_TLX` INT( 11 ) NOT NULL DEFAULT '54',
ADD `BL_VERT_TLY` INT( 11 ) NOT NULL DEFAULT '2922',
ADD `BL_VERT_BRX` INT( 11 ) NOT NULL DEFAULT '432',
ADD `BL_VERT_BRY` INT( 11 ) NOT NULL DEFAULT '3402',
ADD `BL_HORI_TLX` INT( 11 ) NOT NULL DEFAULT '54',
ADD `BL_HORI_TLY` INT( 11 ) NOT NULL DEFAULT '3105',
ADD `BL_HORI_BRX` INT( 11 ) NOT NULL DEFAULT '672',
ADD `BL_HORI_BRY` INT( 11 ) NOT NULL DEFAULT '3405',
ADD `BR_VERT_TLX` INT( 11 ) NOT NULL DEFAULT '2028',
ADD `BR_VERT_TLY` INT( 11 ) NOT NULL DEFAULT '2901',
ADD `BR_VERT_BRX` INT( 11 ) NOT NULL DEFAULT '2433',
ADD `BR_VERT_BRY` INT( 11 ) NOT NULL DEFAULT '3381',
ADD `BR_HORI_TLX` INT( 11 ) NOT NULL DEFAULT '1752',
ADD `BR_HORI_TLY` INT( 11 ) NOT NULL DEFAULT '3084',
ADD `BR_HORI_BRX` INT( 11 ) NOT NULL DEFAULT '2433',
ADD `BR_HORI_BRY` INT( 11 ) NOT NULL DEFAULT '3384',
ADD `VERT_WIDTH` INT( 11 ) NOT NULL DEFAULT '6',
ADD `HORI_WIDTH` INT( 11 ) NOT NULL DEFAULT '6';


queXF 1.10.2 - changes since 1.10.1

*Updated translations from Launchpad. Thank you for your translations!
*Fixed Bug: MISSING_PAGE_ASSIGN directive was being ignored
*Fixed Bug: Storing large sessions in the database caused performance issues so disabled
*Fixed bug: Remove unnecessary reference to boxgroups
*Fixed bug: Set default width for longtext to 1024
*Compatibility fix: Removed javascript links from admin index
*Updated to php-gettext 1.0.11
*Page setup feature: Added drawing of detected cornerlines in blue and barcode number in barcode box for validation

queXF 1.10.1 - Changes since 1.10.0

Fixed bug: Error when creating new questionnaire without banding XML

queXF 1.10.0 - Changes since 1.9.1:

queXF 1.10.0 and the simultaneous release of queXML 1.3.0 streamlines the paper questionnaire creation process by being able to produce a fully banded questionnaire from queXML. Once the PDF and associated banding XML file is imported to queXF, it is possible to begin scanning completed forms immediately, and export data with full question and value labelling from the original queXML file.

In addition, queXF 1.10.0 allows for the export of unverified data. This may be useful when your settings allow for very accurate OMR and also to view preliminary results before operator verification is complete.

In the backend - queXF 1.10.0 removes the need for using database views and some redundant tables.

Summary of SVN Log:

*Updated translation file and translations from Launchpad
*Added ability to download data that is not verified (just imported and OMR/OCR'ed)
*Updated database schema - removed use of views
*Added new test documents including banding XML document
*Updated default settings to allow for wider selections on A4 pages by default
*Updated default box colour to blue which assisted with colour blindness
*Added ability to import banding XML while importing a PDF file
*Removed references to boxgroups table which was redundant
*Data output now includes labels and sections/etc if banding XML is used
*BUG fix: Gave default value of 0 for 'sheets' column in questionnaires table
*BUG fix: Will not create a new questionnaire if cannot detect all page edges
*BUG fix: Will not apply transforms if not all edges detected
*BUG fix: Made sure boxes are processed in sortorder (javascript edit)