Archive for mai 2015

Kuidas teha optilist tähetuvastust

Üks sõber saatis mulle portsu faile, milles olid skaneeritud tekstid. Need tekstid oli vaja teha uuesti selliseks, et neid saaks arvutis töödelda. Ühesõnaga, oli vaja teha OCR. Minul kodus on Linux, täpsemalt Ubuntu. Ja seni polnud mul veel vajadust olnud oma koduses masinas optilist märgituvastust kordagi teha. Varem oli mul töö juures skanner, mis oskas skaneerimise käigus ise ka OCR’i teha – seetõttu polnud seda vaja arvutis teha. Nüüd aga olid lihtsalt failid, kust tuli tekst võimalikult viisakal moel kätte saada.

Failid ise olid pdf-failid, kuid need olid raamatutest skaneeritud ja salvestatud pildina, st ilma võimaluseta otse pdf’ist teksti kopeerida. Failid olid erineva pikkusega: lühim oli kolm lehekülge, pikim üle 40 lehekülje.

Nagu ikka, esimese asjana veidi “googeldamist”. On olemas päris head võrgus olevad OCR’i pakkuvad lehed, kus saab märgituvastust teha ilma, et omal arvutis vastavat programmi olemas oleks. Üks päris hea leht selleks on siin: https://www.newocr.com/. See leht võimaldab ka pikemaid dokumente tekstiks konverteerida, ainult et tüütu on see, et iga lehte tuleb eraldi salvestada.

Niisiis püüdsin leida vahendit, mis teeks seda kõigi lehtedega korraga ja mis salvestaks tulemuse mulle automaatselt arvutisse.

See “googledamine” andis mulle ka selle lehe: https://help.ubuntu.com/community/OCR. Üldse on leht help.ubuntu.com päris hea leht. Kui osata inglise keelt, siis leiab sealt abi väga paljude Linux’i-teemaliste küsimuste kohta. See leht on küll Ubuntule orienteeritud, aga ka muude Linux’ite korral, mille aluseks on Ubuntu või Debian, on sealsed õpetused üsna hästi rakendatavad.

Selle lehel oli siis kirjas väike skript, kuidas programmi Tesseract abil Linux arvutis teha mitmelehelisele pdf-dokumendile optilist märgituvastust ja kuidas see tulemus salvestada arvutisse tekstifailina. Kordan seda skripti ka siin, tõsi, eestikeelsete kommentaaridega:

Muidugi, selleks et see skript saaks oma tööd korrektselt teha, peavad arvutis olema programmmid ImageMagick ja Tesseract. Hea uudis on see, et Tesseract’il on päris suure hulga erienvate keelte toetus. Ingliskeelne info ütleb nii:

There are currently language packs available for the following languages:
ara (Arabic), aze (Azerbauijani), bul (Bulgarian), cat (Catalan), ces (Czech), chi_sim (Simplified Chinese), chi_tra (Traditional Chinese), chr (Cherokee), dan (Danish), dan-frak (Danish (Fraktur)), deu (German), ell (Greek), eng (English), enm (Old English), epo (Esperanto), est (Estonian), fin (Finnish), fra (French), frm (Old French), glg (Galician), heb (Hebrew), hin (Hindi), hrv (Croation), hun (Hungarian), ind (Indonesian), ita (Italian), jpn (Japanese), kor (Korean), lav (Latvian), lit (Lithuanian), nld (Dutch), nor (Norwegian), pol (Polish), por (Portuguese), ron (Romanian), rus (Russian), slk (Slovakian), slv (Slovenian), sqi (Albanian), spa (Spanish), srp (Serbian), swe (Swedish), tam (Tamil), tel (Telugu), tgl (Tagalog), tha (Thai), tur (Turkish), ukr (Ukrainian), vie (Vietnamese)

Nagu näete, on ka eesti keel selles loetelus olemas. Ma arvan, et enamasti ei tule ette juhtumit, kus on vaja teha tekstiks mingit sellise keele faili, mille toetus Tesseract’il puudub. Kindlasti on aga nii, et parim märgituvastus on just inglise keeles. Kuigi päris laitmatu ei ole märgituvastus kunagi – kui olete OCR-’i läbi teinud, tuleb pärast kindlasti tulemus üle kontrollida ja vead ära parandada. Ah ja, kui kellelgi peaks olema oskust, siis saab Tesseract’i ise niiöelda “treenida”: https://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3.

Mina sain igatahes ilusasti mulle saadetud failid tekstiks teha ja sõbrale tagasi saata. Ehk on kellelgi veel siinsest infost kasu. Seda infot võib vabalt levitada. Aga nagu vabalt levitatavate asjade puhul ikka: siinse info kasutamine on täielikult kasutaja enda vastutusel. Mina, Tarmo Kähr, ei vastuta mingil kombel siinse info kasutamise korral tekkivate tagajärgede eest, millised need tagajärjed siis ka ei oleks. Mina olen selle info tasuta saanud, tasuta jagan ma seda ka edasi. Kui kellegi on sellest kasu, on mul hea meel. Kui keegi saab sellest kahju, siis on mul kurb meel. Aga ei kasu ega kahju eest ei võta mina mingit vastutust.