Hogyan végezzünk OCR-t a Linux parancssorból a Tesseract használatával

A Tesseract OCR motor segítségével szöveget bonthat ki a Linux parancssorában található képekből. Gyors, pontos, és körülbelül 100 nyelven működik. Így kell használni.

Optikai karakter felismerés

Optikai karakter felismerés (OCR) az a képesség, hogy szavakat nézzünk meg és találjunk meg egy képen, majd szerkeszthető szövegként kivonjuk őket. Ezt az egyszerű feladatot az emberek számára nagyon nehéz elvégezni a számítógépek számára. A korai erőfeszítések enyhén szólva makacsok voltak. A számítógépeket gyakran összezavarták, ha a betűtípus vagy a méret nem tetszett az OCR szoftvernek.

Ennek ellenére a terület úttörőit továbbra is nagy becsben tartották. Ha elvesztette egy dokumentum elektronikus másolatát, de még mindig megvan a nyomtatott változata, az OCR újra létrehozhat egy elektronikus, szerkeszthető változatot. Még ha az eredmények nem is voltak 100 százalékosan pontosak, ez még mindig nagyszerű időt takarított meg.

Némi kézi rendbetétellel visszakaphatja dokumentumát. Az emberek elnézőek voltak az elkövetett hibákkal kapcsolatban, mert megértették az OCR-csomag előtt álló feladat összetettségét. Ráadásul jobb volt, mint a teljes dokumentumot újragépelni.

A dolgok azóta jelentősen javultak. A Tesseract OCR alkalmazás, írta Hewlett-Packard, az 1980-as években indult kereskedelmi alkalmazásként. 2005-ben nyílt forráskódú volt, és most már támogatja Google. Többnyelvű képességekkel rendelkezik, az egyik legpontosabb OCR-rendszernek tartják, és ingyenesen használható.

A Tesseact OCR telepítése

A Tesseract OCR Ubuntun telepítéséhez használja ezt a parancsot:

sudo apt-get install tesseract-ocr

Fedorán a parancs a következő:

sudo dnf install tesseract

A Manjaro-n be kell írnia:

sudo pacman -Syu tesseract

Tesseact OCR használata

Egy sor kihívást állítunk a Tesseract OCR elé. Az első szöveget tartalmazó képünk egy kivonat a (63) preambulumbekezdésből Általános adatvédelmi szabályzat. Lássuk, az OCR képes-e ezt olvasni (és ébren maradni).

  Playstation játékok lejátszása Linux rendszeren

Ez egy trükkös kép, mert minden mondat halvány felső indexszámmal kezdődik, ami jellemző a jogalkotási dokumentumokban.

Meg kell adnunk a tesseract parancsnak néhány információt, többek között:

A feldolgozni kívánt képfájl neve.
A kibontott szöveg tárolására létrehozott szövegfájl neve. Nem kell megadnunk a fájl kiterjesztését (mindig .txt lesz). Ha már létezik ilyen nevű fájl, a rendszer felülírja.
Használhatjuk a –dpi opciót, hogy megmondjuk a tesseractnek, hogy mi a pont per hüvelyk (dpi) a kép felbontása. Ha nem adunk meg dpi értéket, a tesseract megpróbálja kitalálni.

Képfájlunk neve „recital-63.png”, felbontása 150 dpi. Létrehozunk belőle egy „recital.txt” nevű szövegfájlt.

Parancsunk így néz ki:

tesseract recital-63.png recital --dpi 150

Az eredmények nagyon jók. Az egyetlen probléma a felső indexekkel van – túl halványak voltak ahhoz, hogy helyesen lehessen olvasni. A jó minőségű kép elengedhetetlen a jó eredmények eléréséhez.

A tesseract a felső indexszámokat idézőjelként (“) és fokjelként (°) értelmezte, de a tényleges szöveget tökéletesen kivonták (a kép jobb oldalát le kellett vágni, hogy ide illeszkedjen).

Az utolsó karakter egy 0x0C hexadecimális értékű bájt, amely egy kocsi visszatérés.

Az alábbiakban egy másik kép látható különböző méretű, félkövér és dőlt szöveggel.

A fájl neve „bold-italic.png”. Szeretnénk létrehozni egy „bold.txt” nevű szövegfájlt, ezért a parancsunk a következő:

tesseract bold-italic.png bold --dpi 150

Ez nem okozott semmilyen problémát, és a szöveget tökéletesen kivonták.

  A bash használata könyvtárak létrehozására Linux alatt [Guide]

Különböző nyelvek használata

Tesseact OCR támogatás mintegy 100 nyelven. Egy nyelv használatához először telepítenie kell azt. Ha megtalálta a listában a használni kívánt nyelvet, jegyezze fel annak rövidítését. Telepíteni fogjuk a Welsh támogatását. A rövidítése „cym”, ami a „Cymru” rövidítése, ami walesi nyelvet jelent.

A telepítőcsomag neve „tesseract-ocr-”, a nyelvi rövidítéssel a végén. A walesi nyelvi fájl Ubuntuban való telepítéséhez a következőket fogjuk használni:

sudo apt-get install tesseract-ocr-cym

A kép a szöveggel lent. Ez a walesi himnusz első verse.

Lássuk, hogy a Tesseract OCR megfelel-e a kihívásnak. A -l (language) opciót használjuk, hogy a tesseract megismerje azt a nyelvet, amelyen dolgozni szeretnénk:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

A tesseract tökéletesen megbirkózik, amint azt az alábbi kivonatolt szöveg is mutatja. Da iawn, Tesseract OCR.

Ha a dokumentuma két vagy több nyelvet tartalmaz (például egy walesi-angol szótárt), akkor pluszjellel (+) utasíthatja a tesseract-ot, hogy adjon hozzá egy másik nyelvet, például:

tesseract image.png textfile -l eng+cym+fra

A Tesseact OCR használata PDF-ekkel

A tesseract parancsot képfájlokkal való együttműködésre tervezték, de nem tudja olvasni a PDF-fájlokat. Ha azonban szöveget kell kivonnia egy PDF-ből, először használhat egy másik segédprogramot képkészlet létrehozásához. Egyetlen kép a PDF egyetlen oldalát képviseli.

A szükséges pdftppm segédprogram már telepítve kell lennie Linux számítógépén. A példánkban használt PDF Alan Turing mesterséges intelligenciáról szóló, „Computing Machinery and Intelligence” című tanulmányának másolata.

A címoldal PDF-je

A -png kapcsolóval adjuk meg, hogy PNG fájlokat akarunk létrehozni. A PDF fájl neve „turing.pdf”. Képfájljainkat „turing-01.png”, „turing-02.png” és így tovább:

pdftoppm -png turing.pdf turing

A tesseract futtatásához minden képfájlon egyetlen paranccsal, az a hurokhoz. Minden egyes „turing-nn.png” fájlunkhoz lefuttatjuk a tesseract programot, és létrehozunk egy „text-” és „turing-nn” nevű szövegfájlt a képfájl nevének részeként:

for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;

for i in turing-??.png;  csinálj tesseraktot

Az összes szöveges fájl egyesítéséhez használhatjuk a cat:

cat text-turing* > complete.txt

cat text-turing* > teljes.txt egy terminálablakban.”  width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onrror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

Na, hogyan sikerült? Nagyon jól, ahogy lentebb is látható. Az első oldal azonban meglehetősen kihívást jelentőnek tűnik. Különféle szövegstílusokkal és -méretekkel, valamint díszítéssel rendelkezik. Az oldal jobb szélén egy függőleges „vízjel” is található.

A kimenet azonban közel áll az eredetihez. Nyilvánvaló, hogy a formázás elveszett, de a szöveg helyes.

A függőleges vízjelet halandzsaként írták át az oldal alján. A szöveg túl kicsi volt ahhoz, hogy a tesseract pontosan elolvashassa, de elég könnyű lenne megtalálni és törölni. A legrosszabb eredmény az lett volna, ha az egyes sorok végén kósza karakterek jelennek meg.

Érdekes módon figyelmen kívül hagyták a második oldalon a kérdések és válaszok listájának elején lévő egyetlen betűt. Az alábbiakban a PDF-ből származó rész látható.

Amint alább látható, a kérdések megmaradnak, de a „Q” és „A” minden sor elején elveszett.

A diagramok szintén nem lesznek megfelelően átírva. Nézzük meg, mi történik, ha megpróbáljuk kivonni az alábbit a Turing PDF-ből.

Egy diagram a

Amint az alábbi eredményünkben is látható, a karakterek beolvasásra kerültek, de a diagram formátuma elveszett.

A tesseract ismét megküzdött az alsó indexek kis méretével, és helytelenül kerültek megjelenítésre.

Az igazat megvallva, ez így is jó eredmény volt. Nem tudtunk egyértelmű szöveget kivonni, de akkor ezt a példát szándékosan választottuk, mert kihívást jelentett.

Jó megoldás, amikor szüksége van rá

Az OCR-t nem kell naponta használnia. Ha azonban szükség van rá, jó tudni, hogy az egyik legjobb OCR-motor áll az Ön rendelkezésére.