Učící algoritmy a OCR rubrika: Návrh

7 Tomáš Tichý
položil/-a 2.3.2015

Dostala se mi do rukou kupa textu, ktere bych potreboval prevest do elektronicke podoby. Je toho pomerne dost, takze neni uplne efektivni prohnat to nejakou jednoduchou OCR aplikaci, ktera polovinu znaku urci blbe. Navic jde o dokumenty, se kterymi maji bezne nastroje docela problem - znakove sady nejsou uplne obvykle, pouzite fonty take ne.

Rikal jsem si, jestli neexistuje nejaky OCR tool na bazi postupneho uceni. Predstavuji si to tak, ze program automaticky rozreze text na jednotlive znaky, ja k nim urcim hodnoty a on na zaklade podobnosti urci i zbytek. Pokud si nebude jisty, tak se zepta, udaj si doplni a rekognizovani textu zpresni. Mel jsem za to, ze v dobe, kdy je Google, FB a jine socialny nesmysly schopen detekovat tvare v real-time a prirazovat je k lidem, by to nemel byt zas takovy problem.

Nicmene po stredne dlouhem pruzkumu jsem nenasel nic, co by se alespon vzdalene blizilo mym potrebam. Vsechno funguje na predem definovanych setech znaku a to jeste buhvijak.

Nemate s necim podobnym zkusenost? Klidne bych do toho i par korun zainvestoval, lepsi nez si to psat sam. To je az uplne posledni varianta, protoze jak funguji ucici se algoritmy a graficke rozpoznavani tvaru mam jen matne predstavy.

odkaz
1 peter.zvirinsky
odpověděl/-a 28.8.2015
 
upravil/-a 28.8.2015

S free OCR riešeniami je to skutočne veľmi zlé. Ja som stál pred podobnou úlohou pár mesiacou dozadu a pri množstve dokumentov, ktoré som potreboval spracovávať (rádovo 100-ky tisíc) komerčne riešenia neprichádzali do úvahy. Ponuky od jednotlivých poskytovateľov sa pohybovali od tisícok eur na rok až na tisícky za mesiac. Preto som sa nakoniec uchýlil k Tesseract-u (https://github.com/tesseract-ocr/tesseract). Z mojích skúseností je to najlepší free OCR engine a myslím si, že by ti mohol stačiť.

Čo sa týka jazykov, tak Tesseract podporuje v defaulte skoro všetko od čestiny až po čínštinu: (https://code.google.com/p/tesseract-ocr/downloads/list). Ďalšie jazyky je možné dotrénovať. Taktiež umožňuje dotrénovanie prakticky ľubovolného fontu. Dokonca to funguje podobne ako píšeš:

  1. zoberieš dokument s požadovaným fontom v čo najväčšej kvalite, kľudne si ho môžeš vytvoriť elektronicky
  2. vyznačíš v obrázku obdlžníkmi (box-y) jednotlivé znaky do zvláštneho súboru
    • pre toto dokonca existuje špecializovaný sw, ktorý ti potom túto informáciu vyexportuje do súboru, ktorému Tesseract rozumie. Zoznam dostupného sw: https://code.google.com/p/tesseract-ocr/wiki/AddOns
      • pôvodný obrázok spolu s boxfile-om použiješ na trénovanie Tesseract-u

Celý postup trénovania nájdeš popísaný napríklad tu: https://blog.cedric.ws/how-to-train-tesseract-301

Na záver by som rád upozornil na problémy, na ktoré s Tesseract-om skoro určite narazíš. Ako som v úvode schválne spomenul Tesseract je len OCR-engine, nie plnohodnotné OCR riešenie. K tomu aby bol, mu chýbajú 2 hlavné veci:

  1. Preprocessing dokumentov: ak sú tvoje dokumenty v zlej kvalite (zašumené, zrotované, farebné atď.) tak to môže skutočne radikálne znížiť presnosť. Z mojej skúsenosti som bez preprocessing-u začínal na presnosti cca. 30%. Po pridaní a vyladení preprocessingu som sa dostal až na presnosť 90%, čo považujem za veľmi dobrý výsledok, vzhľadom k často skutočne velmi nekvalitným dokumentom ktoré spracovávam. Nejaký veľmi stručny úvod do tejto problematiky nájdeš tu: https://code.google.com/p/tesseract-ocr/wiki/ImproveQuality
  2. Pokročila segmentácia: To znamená rozsekanie dokumentu na časti s textom. To znamená ak tvoje dokumenty obsahujú napr. tabuľky, tak sa na nich Tesseract nemusí vôbec chytať. Z mojej skúsenosti je dobré z dokumentu vyhodiť všekto čo nie je text (teda ďalší preprocessing)

Mnou dosiahnutá presnosť 90% sa na danej množine dokumentov už blíži presnosti komerčných riešení, takže vzhľadom k ich cene sa mi vôbec ale vôbec neoplatia.

Rada na záver: kým niesu tvoje dokumenty ideálne predspracované, tak nemá vôbec žiadny zmysel Tesseract trénovať (spálil som natom veľa času). Ja nakoniec až na pár drobných nastavení používam všetko v default-e a to tiež dokumenty používajú bežne napr. rôzne fonty.

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.