Code128 barcode is high density 1D barcode which was developed in 80-th as replacement of 2 of 5 codes. Because this barcode has more density then other barcode it requires checksum by default which must reduce recognition errors. Checksum isn’t to strong but in main cases it is enough to make recognition errors rate low. Main disadvantage of Code128 that it doesn’t have information for restoration as 2D barcodes do. This leads to situation when in low quality image we cannot recognize barcode segment correctly because on low quality images some barcode segments can have multiple recognition results.
The barcode is a row of letters which are represented by the group of barcodes and some of these lettesr on low quality images are recognized but recognized with multiple variants. In normal recognition mode this row is checked by checksum and drop out if checksum is wrong.
In increase the recognition quality we create decision algorithm which recognize low quality barcodes by creating decision tree from these variants and checks variants sequences by checksum. In most of cases (more then 95-98%) it allows to recognize barcodes correctly which mustn’t be recognized. But in 2-5% cases it recognizes with error.
I started project to make recognition process more customizable and give user ability to tune these engine modes manually. So, the decision tree algorithm could be disabled and hard modes also could be disabled. This will allow to increase performance on high quality images and decrease false positive recognition. Currently this improvement isn’t implemented, but I think it will be implemented in 2021Q2.