mchehab / zbar

ZBar is an open source software suite for reading bar codes from various sources, including webcams. As its development stopped in 2012, I took the task of keeping it updated with the V4L2 API. This is the main repository for it. There's a clone at at LinuxTV.org, and another one at gitlab.
https://linuxtv.org/downloads/zbar/
GNU Lesser General Public License v2.1
951 stars 201 forks source link

add option to read barcode in order #236

Open nanderer opened 1 year ago

nanderer commented 1 year ago

hi,

i have a page with 36 barcodes, one under another, when i read it like this i get


t@box:~/Documents$ zbarimg Scanned\ Document-2r.png 
CODE-39:2
CODE-39: RITTER AUF IHREN SCHOEN GEZAEUMTEN PFERDEN-. 
CODE-39: TIURI SAH DEN FESTLICHEN AUFZUG VOR SICH.. DIE 
CODE-39: RITTER DIE WACHENDEN ABHOLTEN. MORGEN FRUEH--. 
CODE-39:SIE WIEDER GEOEFFNET-. WENN KOENIG DAGONAUTS 
CODE-39: ERST AM MORGEN-. FRUEH UM SIEBEN UHR-. WURDE 
CODE-39: HATTE SOGAR DIE TUER ZUR KAPELLE GESCHLOSZEN. 
CODE-39: DURFTEN SIE AUCH KEINE VERBINDUNG HABEN. MAN 
CODE-39: GANZE NACHT HINDURCH. UND MIT DER AUSZENWELT 
CODE-39:SPRECHEN.-. KEIN WORT DURFTEN SIE SAGEN-. DIE 
CODE-39:JUENGLINGE DURFTEN NICHT MITEINANDER 
CODE-39:MEINEM LEBEN NOCH NIE GEWESEN. DIE FUENF 
CODE-39:DACHTE TIURI BALD DARAUF. SO STILL IST ES IN 
CODE-39: ALS OB ER SICH SCHAEMTE. WIE STILL ES IST-. 
CODE-39:SAHEN IN SEINE RICHTUNG.WILMO NEIGTE DEN KOPF-. 
CODE-39:KRATZENDES GERAEUSCH AUF DEM BODEN. DIE ANDERN 
CODE-39:BEWEGTE SICH UND ERZEUGTE MIT DEN SCHUHEN EIN 
CODE-39:KERZE. WORAN DACHTE WOHL JIUSIPU$. WILMO 
CODE-39:KOPF AB UND RICHTETE DIE AUGEN WIEDER AUF DIE 
CODE-39:BLICKTEN SIE SICH AN.-. DANN WANDTE TIURI DEN 
CODE-39:UND BLICKTE TIURI GERADE INS GESICHT.EINE WEILE 
CODE-39:HOEHE-. ABER PLOETZLICH AENDERTE ER DIE HALTUNG 
CODE-39: JIUSIPU SASZ AUFRECHT UND BLICKTE IN DIE 
CODE-39:HATTE DAS GESICHT IN DEN HAENDEN VERBORGEN. 
CODE-39: UND WILMO SCHAUTEN AUF IHRE KERZEN.-. ARMAN 
CODE-39:FOLDO UND ARMAN-. NACH WILMO UND JIUSIPU. FOLDO
CODE-39:DASZELBE FUEHLTEN$. TIURI SCHAUTE SICH UM NACH 
CODE-39:ER FRAGTE SICH-. OB SEINE FREUNDE WOHL 
CODE-39:WIEDER AB. MANCHMAL DACHTE ER GAR NICHTS. 
CODE-39:WAR-. ABER SEINE GEDANKEN SCHWEIFTEN IMMER 
CODE-39:NACHDENKEN-. DIE ER HATTE-. WENN ER RITTER 
CODE-39:SOLLTE ERNSTHAFT UEBER DIE PFLICHTEN 
CODE-39:DIE  VOR IHM STAND. WIE SPAET WAR ES WOHL$. ER 
CODE-39:TIURI KNIETE AUF DEM STEINERNEN BODEN DER 
CODE-39:NACHTWACHE
scanned 35 barcode symbols from 1 images in 0,86 seconds

ok, one is missing, thats another thing, but my issue is that this text makes now very less sense cause its all randomly shuffled (or depending on which one get fasted detected) what i need is an option to scan them in order, i hacked a bit around and came up with this:

t@box:~/Documents$ convert Scanned\ Document-2r.png -crop x86 scanned2rcrop.png
convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `scanned2rcrop.png' @ warning/png.c/MagickPNGWarningHandler/1668.
t@box:~/Documents$ ls scanned2rcrop-*
scanned2rcrop-0.png   scanned2rcrop-15.png  scanned2rcrop-20.png  scanned2rcrop-26.png  scanned2rcrop-31.png  scanned2rcrop-37.png  scanned2rcrop-5.png
scanned2rcrop-10.png  scanned2rcrop-16.png  scanned2rcrop-21.png  scanned2rcrop-27.png  scanned2rcrop-32.png  scanned2rcrop-38.png  scanned2rcrop-6.png
scanned2rcrop-11.png  scanned2rcrop-17.png  scanned2rcrop-22.png  scanned2rcrop-28.png  scanned2rcrop-33.png  scanned2rcrop-39.png  scanned2rcrop-7.png
scanned2rcrop-12.png  scanned2rcrop-18.png  scanned2rcrop-23.png  scanned2rcrop-29.png  scanned2rcrop-34.png  scanned2rcrop-3.png   scanned2rcrop-8.png
scanned2rcrop-13.png  scanned2rcrop-19.png  scanned2rcrop-24.png  scanned2rcrop-2.png   scanned2rcrop-35.png  scanned2rcrop-40.png  scanned2rcrop-9.png
scanned2rcrop-14.png  scanned2rcrop-1.png   scanned2rcrop-25.png  scanned2rcrop-30.png  scanned2rcrop-36.png  scanned2rcrop-4.png
t@box:~/Documents$ xdg-open scanned2rcrop-*
xdg-open: unexpected argument 'scanned2rcrop-10.png'
Try 'xdg-open --help' for more information.
t@box:~/Documents$ xdg-open scanned2rcrop-0.png 
t@box:~/Documents$ convert Scanned\ Document-2r.png -crop x84 scanned2rcrop.png
convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `scanned2rcrop.png' @ warning/png.c/MagickPNGWarningHandler/1668.
t@box:~/Documents$ xdg-open scanned2rcrop-0.png 
t@box:~/Documents$ convert Scanned\ Document-2r.png -crop x82 scanned2rcrop.png
convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `scanned2rcrop.png' @ warning/png.c/MagickPNGWarningHandler/1668.
t@box:~/Documents$ xdg-open scanned2rcrop-0.png 
t@box:~/Documents$ convert Scanned\ Document-2r.png -crop x83 scanned2rcrop.png
convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `scanned2rcrop.png' @ warning/png.c/MagickPNGWarningHandler/1668.
t@box:~/Documents$ xdg-open scanned2rcrop-0.png 
t@box:~/Documents$ rm scanned2rcrop-*png
t@box:~/Documents$ convert Scanned\ Document-2r.png -crop x83 scanned2rcrop.png
convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `scanned2rcrop.png' @ warning/png.c/MagickPNGWarningHandler/1668.
t@box:~/Documents$ cat >> crop.sh
convert Scanned\ Document-2r.png -crop x83 scanned2rcrop.png
t@box:~/Documents$ ls scanned2rcrop-*
scanned2rcrop-0.png   scanned2rcrop-16.png  scanned2rcrop-22.png  scanned2rcrop-29.png  scanned2rcrop-35.png  scanned2rcrop-41.png  scanned2rcrop-9.png
scanned2rcrop-10.png  scanned2rcrop-17.png  scanned2rcrop-23.png  scanned2rcrop-2.png   scanned2rcrop-36.png  scanned2rcrop-42.png
scanned2rcrop-11.png  scanned2rcrop-18.png  scanned2rcrop-24.png  scanned2rcrop-30.png  scanned2rcrop-37.png  scanned2rcrop-4.png
scanned2rcrop-12.png  scanned2rcrop-19.png  scanned2rcrop-25.png  scanned2rcrop-31.png  scanned2rcrop-38.png  scanned2rcrop-5.png
scanned2rcrop-13.png  scanned2rcrop-1.png   scanned2rcrop-26.png  scanned2rcrop-32.png  scanned2rcrop-39.png  scanned2rcrop-6.png
scanned2rcrop-14.png  scanned2rcrop-20.png  scanned2rcrop-27.png  scanned2rcrop-33.png  scanned2rcrop-3.png   scanned2rcrop-7.png
scanned2rcrop-15.png  scanned2rcrop-21.png  scanned2rcrop-28.png  scanned2rcrop-34.png  scanned2rcrop-40.png  scanned2rcrop-8.png
t@box:~/Documents$ ls scanned2rcrop-{0..42}.png
scanned2rcrop-0.png   scanned2rcrop-16.png  scanned2rcrop-22.png  scanned2rcrop-29.png  scanned2rcrop-35.png  scanned2rcrop-41.png  scanned2rcrop-9.png
scanned2rcrop-10.png  scanned2rcrop-17.png  scanned2rcrop-23.png  scanned2rcrop-2.png   scanned2rcrop-36.png  scanned2rcrop-42.png
scanned2rcrop-11.png  scanned2rcrop-18.png  scanned2rcrop-24.png  scanned2rcrop-30.png  scanned2rcrop-37.png  scanned2rcrop-4.png
scanned2rcrop-12.png  scanned2rcrop-19.png  scanned2rcrop-25.png  scanned2rcrop-31.png  scanned2rcrop-38.png  scanned2rcrop-5.png
scanned2rcrop-13.png  scanned2rcrop-1.png   scanned2rcrop-26.png  scanned2rcrop-32.png  scanned2rcrop-39.png  scanned2rcrop-6.png
scanned2rcrop-14.png  scanned2rcrop-20.png  scanned2rcrop-27.png  scanned2rcrop-33.png  scanned2rcrop-3.png   scanned2rcrop-7.png
scanned2rcrop-15.png  scanned2rcrop-21.png  scanned2rcrop-28.png  scanned2rcrop-34.png  scanned2rcrop-40.png  scanned2rcrop-8.png
t@box:~/Documents$ echo scanned2rcrop-{0..42}.png
scanned2rcrop-0.png scanned2rcrop-1.png scanned2rcrop-2.png scanned2rcrop-3.png scanned2rcrop-4.png scanned2rcrop-5.png scanned2rcrop-6.png scanned2rcrop-7.png scanned2rcrop-8.png scanned2rcrop-9.png scanned2rcrop-10.png scanned2rcrop-11.png scanned2rcrop-12.png scanned2rcrop-13.png scanned2rcrop-14.png scanned2rcrop-15.png scanned2rcrop-16.png scanned2rcrop-17.png scanned2rcrop-18.png scanned2rcrop-19.png scanned2rcrop-20.png scanned2rcrop-21.png scanned2rcrop-22.png scanned2rcrop-23.png scanned2rcrop-24.png scanned2rcrop-25.png scanned2rcrop-26.png scanned2rcrop-27.png scanned2rcrop-28.png scanned2rcrop-29.png scanned2rcrop-30.png scanned2rcrop-31.png scanned2rcrop-32.png scanned2rcrop-33.png scanned2rcrop-34.png scanned2rcrop-35.png scanned2rcrop-36.png scanned2rcrop-37.png scanned2rcrop-38.png scanned2rcrop-39.png scanned2rcrop-40.png scanned2rcrop-41.png scanned2rcrop-42.png
t@box:~/Documents$ zbarimg scanned2rcrop-{0..42}.png
CODE-39:NACHTWACHE
CODE-39:TIURI KNIETE AUF DEM STEINERNEN BODEN DER 
CODE-39:DIE  VOR IHM STAND. WIE SPAET WAR ES WOHL$. ER 
CODE-39:SOLLTE ERNSTHAFT UEBER DIE PFLICHTEN 
CODE-39:NACHDENKEN-. DIE ER HATTE-. WENN ER RITTER 
CODE-39:WAR-. ABER SEINE GEDANKEN SCHWEIFTEN IMMER 
CODE-39:WIEDER AB. MANCHMAL DACHTE ER GAR NICHTS. 
CODE-39:ER FRAGTE SICH-. OB SEINE FREUNDE WOHL 
CODE-39:DASZELBE FUEHLTEN$. TIURI SCHAUTE SICH UM NACH 
CODE-39:FOLDO UND ARMAN-. NACH WILMO UND JIUSIPU. FOLDO
CODE-39: UND WILMO SCHAUTEN AUF IHRE KERZEN.-. ARMAN 
CODE-39:HATTE DAS GESICHT IN DEN HAENDEN VERBORGEN. 
CODE-39: JIUSIPU SASZ AUFRECHT UND BLICKTE IN DIE 
CODE-39:HOEHE-. ABER PLOETZLICH AENDERTE ER DIE HALTUNG 
CODE-39:UND BLICKTE TIURI GERADE INS GESICHT.EINE WEILE 
CODE-39:BLICKTEN SIE SICH AN.-. DANN WANDTE TIURI DEN 
CODE-39:KOPF AB UND RICHTETE DIE AUGEN WIEDER AUF DIE 
CODE-39:KERZE. WORAN DACHTE WOHL JIUSIPU$. WILMO 
CODE-39:BEWEGTE SICH UND ERZEUGTE MIT DEN SCHUHEN EIN 
CODE-39:KRATZENDES GERAEUSCH AUF DEM BODEN. DIE ANDERN 
CODE-39:SAHEN IN SEINE RICHTUNG.WILMO NEIGTE DEN KOPF-. 
CODE-39: ALS OB ER SICH SCHAEMTE. WIE STILL ES IST-. 
CODE-39:DACHTE TIURI BALD DARAUF. SO STILL IST ES IN 
CODE-39:MEINEM LEBEN NOCH NIE GEWESEN. DIE FUENF 
CODE-39:JUENGLINGE DURFTEN NICHT MITEINANDER 
CODE-39:SPRECHEN.-. KEIN WORT DURFTEN SIE SAGEN-. DIE 
CODE-39: GANZE NACHT HINDURCH. UND MIT DER AUSZENWELT 
CODE-39: DURFTEN SIE AUCH KEINE VERBINDUNG HABEN. MAN 
CODE-39: HATTE SOGAR DIE TUER ZUR KAPELLE GESCHLOSZEN. 
CODE-39: ERST AM MORGEN-. FRUEH UM SIEBEN UHR-. WURDE 
CODE-39:SIE WIEDER GEOEFFNET-. WENN KOENIG DAGONAUTS 
CODE-39: RITTER DIE WACHENDEN ABHOLTEN. MORGEN FRUEH--. 
CODE-39: TIURI SAH DEN FESTLICHEN AUFZUG VOR SICH.. DIE 
CODE-39: RITTER AUF IHREN SCHOEN GEZAEUMTEN PFERDEN-. \r
CODE-39:2
CODE-39:2
scanned 36 barcode symbols from 43 images in 0,94 seconds

WARNING: barcode data was not detected in some image(s)
Things to check:
  - is the barcode type supported? Currently supported symbologies are:
    . EAN/UPC (EAN-13, EAN-8, EAN-2, EAN-5, UPC-A, UPC-E, ISBN-10, ISBN-13)
    . DataBar, DataBar Expanded
    . Code 128
    . Code 93
    . Code 39
    . Codabar
    . Interleaved 2 of 5
    . QR code
    . SQ code
  - is the barcode large enough in the image?
  - is the barcode mostly in focus?
  - is there sufficient contrast/illumination?
  - If the symbol is split in several barcodes, are they combined in one image?
  - Did you enable the barcode type?
    some EAN/UPC codes are disabled by default. To enable all, use:
    $ zbarimg -S*.enable <files>
    Please also notice that some variants take precedence over others.
    Due to that, if you want, for example, ISBN-10, you should do:
    $ zbarimg -Sisbn10.enable <files>

wich is what i want but i had to rotate, shift and mesure, crop and then put them all in the right order into the thing, but it would be mouch easyer if you get some top to down left to right option that i could use...

thanks in advance and keep up the good work scanned2rcrop-0 scanned2rcrop-1 scanned2rcrop-2 scanned2rcrop-3 scanned2rcrop-4 scanned2rcrop-5 Scanned Document-2 Scanned Document-2r

nanderer commented 1 year ago

oh no, github put that all inline and removed replaced the original filenames..., here is a zip: cut_needed_to_scan_in_order.zip