Hledáme možnosti OCR na Linuxu. Zvládne něco češtinu?
V tomto krátkém článku se podělím o své zkušenosti se zprovozňováním programů OCR na Linuxu. Dva existují, ale výsledky by mohly být lepší.
Mnoho lidí se může dostat do situace, kdy bude potřebovat z obrázku dostat textový výstup, tedy optické rozpoznávání znaků – tzv. OCR. Patřím k nim. Primárně používám Linux, proto jsem chtěl řešení postavené na Linuxu. Za řešení nechci platit, potřeba bývá omezená, víceméně jednorázová. Dále v článku se podělím o své zkušenosti z procházení nabízených možností splňující vyjmenované podmínky.
Protože v Linuxu jsou grafické programy pro OCR nejčastěji postaveny nad CLI programy, začneme u programů pro příkazovou řádku.
CuneiForm
Jde o textově orientovaný nástroj. Nainstalujeme pomocí balíčku cuneiform. Bohužel jeho úspěšnost mě nepřesvědčila. Použití vypadá takto.
cuneiform -f text -l czech -o edi.txt IMG_20241225_134929887.jpg- -f nastavuje formát
- -l nastavuje jazyk překladu
- -o nastaví soubor výstupu
Bohužel výstup nedopadl dobře. Výsledky v anglickém jazyce jsou naneštěstí podobné.
Tesseract
Tesseract je něco jako backend. Může být použit programy s grafikou jako výkonná část. Ovšem dá se použít i samostatně, zde se na to podíváme. Nainstalujeme pomocí balíčku tesseract-ocr. Potom musíme ještě přidat požadovaný jazyk kromě základní angličtiny. V našem případě češtinu. Jde o balíček tesseract-ocr-ces.
Nejdříve zkusím základní převod. Použiji označení zdrojového a cílového souboru a jazyk nastavím na češtinu.
tesseract IMG_20241225_134929887.jpg out.txt -l cesBohužel výstup není použitelný
Tato syntaxe by měla brát textové bloky na základě parametru --psm 6 a zachovat mezery v textu.
tesseract IMG_20241225_134929887.jpg out.txt -l ces --psm 6 -c preserve_interword_spaces=1Výstup je bohužel ale také nezajímavý.
OCRmyPDF
Zajímavý program, který funguje na tom, že do PDF souborů přidá znakovou vrstvu. Jako zdroj mu poslouží jak obrázek, tak i PDF soubor tvořený pouze obrázkem, tedy bez textové vrstvy. Výstupem je PDF soubor. Pokud žádáme pouze text, můžeme tento soubor převést na textový soubor. Jde o program příkazového řádku, příkaz vypadá potom takto:
ocrmypdf start.pdf output.pdf -l cePřevod do textového souboru provedeme příkazem.
pdftotext output.pdf output.txtA teď to hlavní – výstup. Nejdřív PDF soubor.
A potom textový soubor.
Nejlepší výstup. Je potřebná revize, ale vypadá velmi rozumně.
Toto byly programy pro příkazovou řádku. V další kapitole se podíváme na programy v grafickém prostředí.