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.
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...
hi,
i have a page with 36 barcodes, one under another, when i read it like this i get
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:
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