Jak udělat OCR z příkazového řádku Linuxu pomocí Tesseract

Text můžete extrahovat z obrázků na příkazovém řádku Linuxu pomocí enginu Tesseract OCR. Je rychlý, přesný a funguje asi ve 100 jazycích. Zde je návod, jak jej používat.

Optické rozpoznávání znaků

Optické rozpoznávání znaků (OCR) je schopnost prohlédnout si a najít slova v obrázku a poté je extrahovat jako upravitelný text. Tento jednoduchý úkol pro lidi je pro počítače velmi náročný. První snahy byly přinejmenším neohrabané. Počítače byly často zmatené, pokud typ nebo velikost písma nebo velikosti nevyhovovaly softwaru OCR.

Přesto byli průkopníci v této oblasti stále ve velké úctě. Pokud jste ztratili elektronickou kopii dokumentu, ale stále měli tištěnou verzi, OCR může znovu vytvořit elektronickou, upravitelnou verzi. I když výsledky nebyly 100% přesné, pořád to byla skvělá úspora času.

S trochou ručního úklidu byste měli svůj dokument zpět. Lidé byli shovívaví k chybám, které udělal, protože chápali složitost úkolu, kterému čelí balíček OCR. Navíc to bylo lepší než přepisování celého dokumentu.

Věci se od té doby výrazně zlepšily. Aplikace Tesseract OCR, kterou napsal Hewlett Packard, začala v 80. letech minulého století jako komerční aplikace. V roce 2005 byla otevřena jako open source a nyní ji podporuje Google. Má vícejazyčné schopnosti, je považován za jeden z nejpřesnějších dostupných systémů OCR a můžete jej používat zdarma.

Instalace Tesseract OCR

Chcete-li nainstalovat Tesseract OCR na Ubuntu, použijte tento příkaz:

sudo apt-get install tesseract-ocr

Na Fedoře je příkaz:

sudo dnf install tesseract

Na Manjaro musíte zadat:

sudo pacman -Syu tesseract

Pomocí Tesseract OCR

Pro Tesseract OCR postavíme řadu výzev. Náš první obrázek, který obsahuje text, je výňatek z bodu odůvodnění 63 dokumentu Obecná nařízení o ochraně osobních údajů. Uvidíme, jestli to OCR dokáže přečíst (a zůstat vzhůru).

  Jak najít 32bitové aplikace na vašem iPhone

Je to ošidný obrázek, protože každá věta začíná slabým horním indexem, což je typické v legislativních dokumentech.

Musíme příkazu tesseract poskytnout nějaké informace, včetně:

Název souboru obrázku, který chceme zpracovat.
Název textového souboru, který vytvoří, aby obsahoval extrahovaný text. Příponu souboru nemusíme uvádět (vždy to bude .txt). Pokud již soubor se stejným názvem existuje, bude přepsán.
Můžeme použít volbu –dpi, abychom tesseractu řekli, co je bodů na palec (dpi) rozlišení obrázku je. Pokud neposkytneme hodnotu dpi, tesseract se to pokusí zjistit.

Náš soubor obrázku se jmenuje „recital-63.png“ a jeho rozlišení je 150 dpi. Vytvoříme z něj textový soubor s názvem „recital.txt“.

Náš příkaz vypadá takto:

tesseract recital-63.png recital --dpi 150

Výsledky jsou velmi dobré. Jediným problémem jsou horní indexy – byly příliš slabé na to, aby se daly správně přečíst. Kvalitní obraz je nezbytný pro dosažení dobrých výsledků.

tesseract interpretoval čísla horních indexů jako uvozovky (“) a symboly stupňů (°), ale skutečný text byl extrahován dokonale (pravá strana obrázku musela být oříznuta, aby se sem vešla).

Konečným znakem je bajt s hexadecimální hodnotou 0x0C, což je návrat vozíku.

Níže je další obrázek s textem v různých velikostech, a to jak tučně, tak kurzívou.

Název tohoto souboru je „bold-italic.png“. Chceme vytvořit textový soubor s názvem „bold.txt“, takže náš příkaz je:

tesseract bold-italic.png bold --dpi 150

Tenhle nedělal žádné problémy a text byl extrahován perfektně.

  Jak proměnit váš počítač v Chromecast Receiver

Používání různých jazyků

Tesseract podporuje OCR asi 100 jazyků. Chcete-li jazyk používat, musíte jej nejprve nainstalovat. Když v seznamu najdete jazyk, který chcete použít, poznamenejte si jeho zkratku. Chystáme se nainstalovat podporu pro velštinu. Jeho zkratka je „cym“, což je zkratka pro „Cymru“, což znamená velšsky.

Instalační balíček se nazývá „tesseract-ocr-“ se zkratkou jazyka označenou na konci. K instalaci velšského jazykového souboru v Ubuntu použijeme:

sudo apt-get install tesseract-ocr-cym

Obrázek s textem je níže. Je to první sloka velšské národní hymny.

Uvidíme, zda Tesseract OCR zvládne tuto výzvu. Použijeme volbu -l (jazyk), abychom dali společnosti tesseract znát jazyk, ve kterém chceme pracovat:

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

tesseract se s tím dokonale vyrovná, jak je ukázáno v extrahovaném textu níže. Da iawn, Tesseract OCR.

Pokud váš dokument obsahuje dva nebo více jazyků (jako je například velšsko-anglický slovník), můžete pomocí znaménka plus (+) říct tesseractu, aby přidal další jazyk, například:

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

Použití Tesseract OCR s PDF

Příkaz tesseract je navržen pro práci se soubory obrázků, ale nedokáže číst soubory PDF. Pokud však potřebujete extrahovat text z PDF, můžete nejprve použít jiný nástroj k vygenerování sady obrázků. Jeden obrázek bude představovat jednu stránku PDF.

Nástroj pdftppm, který potřebujete by měl být již nainstalován na vašem počítači se systémem Linux. PDF, které použijeme pro náš příklad, je kopií klíčového článku Alana Turinga o umělé inteligenci, „Výpočetní stroje a inteligence“.

PDF titulní strany

Pomocí volby -png určíme, že chceme vytvořit soubory PNG. Název souboru našeho PDF je „turing.pdf“. Naše soubory obrázků budeme nazývat „turing-01.png“, „turing-02.png“ a tak dále:

pdftoppm -png turing.pdf turing

Chcete-li spustit tesseract na každém souboru obrázku pomocí jediného příkazu, musíme použít a pro smyčku. Pro každý z našich souborů „turing-nn.png“ spustíme tesseract a vytvoříme textový soubor s názvem „text-“ plus „turing-nn“ jako součást názvu souboru obrázku:

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

pro i v Turing-??.png;  dělat tesseract

Ke spojení všech textových souborů do jednoho můžeme použít cat:

cat text-turing* > complete.txt

cat text-turing* > complete.txt v okně terminálu.“  width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

Jak to tedy dopadlo? Velmi dobře, jak můžete vidět níže. První stránka však vypadá docela náročně. Má různé styly a velikosti textu a zdobení. Na pravém okraji stránky je také svislý „vodoznak“.

Výstup se však blíží originálu. Je zřejmé, že formátování bylo ztraceno, ale text je správný.

Vertikální vodoznak byl přepsán jako řádek nesmyslu v dolní části stránky. Text byl příliš malý na to, aby jej tesseract přesně četl, ale bylo by snadné jej najít a smazat. Nejhorším výsledkem by byly zbloudilé znaky na konci každého řádku.

Je zvláštní, že jednotlivá písmena na začátku seznamu otázek a odpovědí na straně dvě byla ignorována. Část z PDF je uvedena níže.

Jak můžete vidět níže, otázky zůstávají, ale „Q“ a „A“ na začátku každého řádku byly ztraceny.

Diagramy také nebudou správně přepsány. Podívejme se, co se stane, když se pokusíme extrahovat níže zobrazený soubor z Turingova PDF.

Schéma

Jak můžete vidět v našem výsledku níže, znaky byly přečteny, ale formát diagramu byl ztracen.

tesseract se opět potýkal s malou velikostí indexů a ty byly vykresleny nesprávně.

Upřímně řečeno to byl stále dobrý výsledek. Nebyli jsme schopni extrahovat přímočarý text, ale pak byl tento příklad záměrně vybrán, protože představoval výzvu.

Dobré řešení, když ho potřebujete

OCR není něco, co byste museli používat denně. Když však nastane potřeba, je dobré vědět, že máte k dispozici jeden z nejlepších OCR motorů.