Žádné nahrávání, 100% lokálně, bez účtu

Článek

Zlepšení přesnosti OCR: opravte obrázek před rozpoznáváním textu

OCR je přesné jen natolik, jak dobrý je obrázek, který mu poskytnete. Nakřivený, nízkokontrastní, zašuměný sken produkuje nesouvislý text bez ohledu na to, jak dobrý je engine. Zde je to, co skutečně zlepšuje výsledky, v pořadí, ve kterém to dělat, vše běžící lokálně ve vašem prohlížeči.

Proč má OCR problémy s reálnými skeny

OCR engine jako Tesseract byl trénován na čistém, horizontálním textu s vysokým kontrastem. Segmentuje stránku na řádky, řádky na slova a slova na tvary znaků, poté každý tvar porovnává se svým natrénovaným modelem. Reálné skeny tyto předpoklady porušují: stránka je nakloněna o několik stupňů, osvětlení je nerovnoměrné, rozlišení je nízké a okraj skenovacího lůžka nebo protilehlá stránka přidávají tmavý šum. Každý z těchto problémů způsobuje, že krok segmentace řádků a znaků odhaduje špatně, a špatná segmentace se propaguje do špatných znaků. Řešením je zřídka jiný engine: je to příprava obrázku tak, aby předpoklady enginu platily. V praxi předzpracování zlepšuje přesnost více než volba OCR enginu.

Schéma OCR pipeline předběžného zpracování: sken prochází kroky orientace, korekce naklonění, ořezu a stupňů šedé před dosažením rozpoznávacího modulu.

Začněte s rozlišením: cílejte na 300 DPI

Tesseract funguje nejlépe při přibližně 300 DPI pro normální text. Pod přibližně 200 DPI se tahy každého glyfu rozmazávají do sousedních a přesnost prudce klesá. Pokud máte kontrolu nad skenováním, nastavte skener na 300 DPI ještě před čímkoli jiným, protože to je volba s největším dopadem. Pokud máte pouze obrázek s nízkým rozlišením, jeho zvětšení nevymyslí detaily, které nikdy nebyly zachyceny, ale mírné zvětšení může enginu přesto pomoci oddělit dotýkající se znaky tím, že segmentaci poskytne více pixelů. Velmi drobný tisk těží z 400 až 600 DPI; nad tuto hodnotu soubor pouze roste bez zisku přesnosti. Pokud je zdrojem PDF, nejprve rastrujte každou stránku na obrázek při cílovém DPI, poté na tom obrázku spusťte OCR.

Opravte orientaci

Pokud je stránka otočena o 90, 180 nebo 270 stupňů, engine čte ze strany nebo obráceně a vrací nesmysly. Tesseract má průchod detekce orientace a skriptu (OSD), který dokáže rotaci odhadnout, ale je nespolehlivý na řídkém textu, formulářích nebo stránkách dominovaných obrázky. Otočení stránky do vzpřímené polohy odstraňuje potřebu odhadování. Tento krok je bezeztrátový a okamžitý: rotace o násobek 90 stupňů pouze přemapuje stávající pixely na nové pozice bez ztráty kvality a bez převzorkování. Proveďte to před narovnáváním, protože narovnávání předpokládá, že text je již přibližně horizontální.

Narovnání: vyrovnání malého náklonu

Dokonce i náklon 2 až 3 stupně, který vzniká vložením stránky mírně nakřivo, škodí OCR: krok hledání horizontálních řádků rozdělí jeden řádek textu na dva nebo sloučí dva řádky do jednoho. Narovnání měří dominantní úhel textových řádků (obvykle analýzou projekčního profilu nebo Houghovy transformace) a otočí stránku zpět do roviny. Na rozdíl od otočení o 90 stupňů je narovnání malá rotace o libovolný úhel, takže převzorkuje pixely a přidává malé množství rozmazání. Tento kompromis se téměř vždy vyplatí, protože rovné řádky se segmentují čistě a zisk přesnosti dalece převáží mírné změkčení. Narovnávejte po opravě orientace a před oříznutím.

Před a po korekci naklonění: textová stránka nakloněná o několik stupňů vlevo, vyrovnaná do vodorovné polohy vpravo tak, aby řádky ležely vodorovně.

Ořízněte na text a odstraňte šum

Vše, co není váš hledaný text, je šum, který může engine špatně přečíst: tmavý okraj skenovacího lůžka, část protilehlé stránky, sešitý roh, prst nebo děrovací otvor. Oříznutím na samotný textový blok odstraníte tyto falešné cíle, což zlepšuje přesnost i urychluje rozpoznávání, protože engine má méně plochy k analýze. U dokumentu s více sloupci také oříznutí (nebo spouštění OCR po jednom sloupci) zabraňuje enginu číst přímo přes mezisloupcový prostor a prolínat dva sloupce do jednoho nesrozumitelného řádku. Ořezávejte po narovnání, aby obsah seděl přesně v rámci.

Kontrast, stupně šedi a jak binarizace skutečně funguje

OCR nakonec běží na binárním obrázku: každý pixel je rozhodnut být inkoustem nebo papírem. Tesseract to dělá interně pomocí Otsuovy metody, která vybere jeden globální práh z histogramu obrázku. To funguje dobře, když má stránka rovnoměrné osvětlení a dobrý kontrast, a selhává, když stín nebo barevné pozadí způsobí, že jeden roh je tmavší, než práh očekává. Spolehlivé výhody jsou převod do stupňů šedi, aby barevná vrstva nemohla zmást práh, a vyrovnání osvětlení tak, aby celá stránka ležela na jedné straně prahu. Mírné zvýšení kontrastu pomáhá bledému textu. Co obvykle přináší opačný efekt, je tvrdá ruční binarizace: pokud sami zprahujete na čistou černo-bílou se špatnou hodnotou, vymažete bledé tahy, které by vlastní průchod enginu zachoval. Nechte engine binarizovat a dejte mu rovnoměrný obrázek ve stupních šedi. Sunasty nabízí převod do stupňů šedi pro PDF; pro jemné doladění kontrastu je desktopový editor stále lepší, ale rovnoměrné osvětlení při skenování záleží více než jakýkoli posuvník.

Vyberte správný jazyk a ověřte výstup

Tesseract načítá samostatný soubor s natrénovanými daty pro každý jazyk a skript. Spuštění anglického modelu na francouzský nebo řecký text způsobuje zbytečné chyby, zejména u písmen s diakritikou nebo neanglických znaků, proto vyberte jazyk odpovídající dokumentu. Nakonec zacházejte s výstupem OCR jako s konceptem, nikoli jako s konečnou odpovědí: engine nemá žádný způsob, jak zjistit, zda je jméno správně napsáno nebo zda 0 není O. Zkontrolujte čísla, vlastní jména a vše, co je právně nebo finančně důležité. U tabulek a vícesloupcových rozvržení počítejte s ručními opravami struktury, protože OCR vrací proud rozpoznaného textu, nikoli rekonstruované rozvržení.

Nástroje v tomto článku

Časté dotazy

Zvětšení rozmazaného skenu zlepší OCR?

Samo o sobě příliš ne. Zvětšení nedokáže obnovit detaily, které sken nikdy nezachytil, takže rozmazaný obrázek při 100 DPI zůstane rozmazaný. Mírné zvětšení může enginu pomoci oddělit dotýkající se znaky tím, že segmentaci poskytne více pixelů, ale opětovné skenování při 300 DPI je mnohem účinnější než jakékoli zvětšení.

Mám obrázek nejprve sám převést na čistou černo-bílou?

Obvykle ne. Tesseract binarizuje interně Otsuovou metodou a ruční tvrdý práh se špatnou hodnotou vymaže bledé tahy, které by engine zachoval. Místo toho převeďte do stupňů šedi a vyrovnejte osvětlení, pak nechte engine zvolit vlastní práh.

Můj text je bokem. Otočí ho OCR automaticky?

Někdy. Tesseract má průchod detekce orientace, ale je nespolehlivý na formulářích, řídkém textu nebo stránkách s mnoha obrázky. Otočení stránky do vzpřímené polohy o 90, 180 nebo 270 stupňů je bezeztrátové a odstraňuje potřebu odhadování, takže je to bezpečnější volba.

Nahraje některý z těchto kroků můj dokument?

Ne. Otočení, narovnání, oříznutí, převod do stupňů šedi i samotné OCR vše běží ve vašem prohlížeči. OCR používá WebAssembly build Tesseractu a natrénovaná jazyková data jsou stažena jednou a uložena do mezipaměti. Váš soubor nikdy neopustí zařízení.

Zdroje