OCR, GTK şi alte acronime

Iată ce lucruri îmi produc mie bucurii profesionale.

De câteva zile caut un OCR bun (OCR este un nume generic pentru un program căruia îi dai o pagină scanată şi identifică textul scris pe ea, analizând pixelii pentru fiecare literă în parte). Evident, există OCR-uri mai bune şi mai proaste, după câte greşeli fac la recunoaştere. Greşelile pot însemna că OCR-ul recunoaşte un 1 (unu) sau un i (i mic) acolo unde este tipărit un l (l mic), sau că nu înţelege diacriticele româneşti, sau că pierde informaţiile de formatare gen bold/italic/subliniat.

OCR-urile deştepte pot fi antrenate pe un font anume. Adică, dacă documentul scanat are 100 de pagini, stai şi antrenezi OCR-ul pe primele 10-20 de pagini şi îi spui tu „ăsta e un a, ăsta e un b”, literă cu literă. El învaţă modelele şi face mult mai puţine greşeli pentru restul paginilor. Avantajul antrenării e că OCR-ul învaţă să se descurce în special pe fontul şi hârtia pe care e tipărit documentul dat, unde altfel ar face greşeli sistematice (de exemplu, dacă contrastul e prost, h poate fi uşor confundat cu li).

Eu am deja un OCR de Windows, care, ca tot softul de Windows, este o mare cutie neagră. Dacă nu merge perfect, n-ai cum să-l îmbunătăţeşti. Se descurcă binişor pentru limba română, dar are limitări. Aşa că am zis să caut nişte OCR-uri de Linux, să văd în ce stadiu mai sunt. Ultima oară le-am încercat în 2003 şi era jale, practic erau nefolosibile. Acum însă am descoperit Tesseract, un OCR despre care lumea zice că ar fi bun. Şi deci m-am apucat să-l antrenez pe documentul meu. Ocazie cu care am descoperit că Tesseract e al naibii de greu de antrenat. Ca să îl antrenezi pe o pagină, trebuie să creezi un fişier unde îi spui „între pixelii x1 şi x2 şi y1 şi y2 e un dreptunghi care conţine litera m” şi asta pentru fiecare literă din pagina scanată. Tesseract identifică aceste dreptunghiuri, dar de multe ori identifică două litere într-un singur dreptungi (de exemplu m în loc de ni). Pentru a îl corecta, trebuie să editezi un fişier text cu multe numere şi litere. Mi-aş fi dorit o unealtă vizuală unde să văd dreptunghiurile şi să trag de ele sau să le sparg în două cu mouse-ul.

Şi, ca în Linux, dacă nu găseşti un program, îl scrii tu 🙂 Doar că eu, deşi programez sub Linux de 8 ani, habar n-am să fac o aplicaţie cu o interfaţă grafică (butoane, ferestre, meniuri). Aşa că am decis că e momentul să-mi corectez lacuna asta şi m-am apucat să învăţ GTK. GTK este un set de module, disponibile cam pentru orice limbaj de programare, cu care poţi crea foarte uşor aplicaţii grafice. De exemplu, creezi o fereastră principală, un buton, şi specifici ce vrei să se întâmple când utilizatorul apasă pe acel buton. GTK stă la baza multor aplicaţii de Linux, cum ar fi Gimp, Firefox sau Gnome.

Deocamdată sunt la stadiul în care, în vreo 80 de linii de cod, aplicaţia mea ştie să afişeze o imagine şi poţi să defilezi stânga-dreapta-sus-jos prin ea. 🙂 E distractiv să înveţi un limbaj nou, când ai un manual bine scris. Nu ai decât să copiezi bucăţi din exemplele date şi totul pare să meargă. Cu timpul, descoperi că de fapt nu înţelegi de ce codul merge cum merge şi acolo dai de greu. E fascinant cum porneşti la drum cu atitudinea „trebuie să învăţ limbajul ăsta, numai atât cât să-mi pot face treaba cu el” şi descoperi că, de fapt, şi învăţatul în sine e distractiv şi merită să înţelegi în detaliu ce se întâmplă.

6 thoughts on “OCR, GTK şi alte acronime”

  1. Da, mă rog, e o colecție de biblioteci. Dar n-am vrut să mai introduc încă un termen tehnic, și-așa familia mea abia așteaptă poze din Hawaii și eu îi dau înainte cu programarea 🙂

    Nu știu de ce nu Qt, mi-a surâs mai mult GTK-ul pentru că sunt obișnuit cu ceea ce rezultă (multe aplicații Linux sunt dezvoltate în GTK). Adevărul e că n-am făcut o comparație.

  2. Bun raspunsul cu „poze din Hawaii”. Asteptam in continuare…
    In alta ordine de idei, cine sunt INFOARENA ? Astept email (ca telefon poate e mai greu…).

  3. Salut!
    Ma bucur ca vad ca cineva programeaza sub linux de 8 ani. Eu nu sunt de meserie programator, e mai mult un hobby. Nu e singurul program lipsa,pe mine m-ar interesa un program free care sa gestioneze o biblioteca de carti a unei scoli.
    Am lucrat putin cu pygtk+glade. Daca pot sa te ajut cu ceva spune. O zi buna.

  4. GTK este interesant totusi recent in ultimile versiuni am gasit niste „diamante” de cod incercand sa portez/adaptez niste librarii. Despre qt pot sa zic ca pare curat din punctul de vedere al diamantelor totusi si licentierea difera si qt este mentinut de o firma deci nivelul asteptarilor ar tb sa fie mai ridicat. Pe departe sunt destul de multe applicatii bazate pe qt/kde cat si pe GTK . Alte incercari ar fi wxWindows care aduce cumva cu MFC , si FLTK. Ceea ce mi se o investitie buna dpdv al timpului de invatare este ca toate aceste libtarii GTK/QT/wxWindos/FLTK sunt crossplatform si otata scrisa o applicatie cu ele ar tb sa fie destul de usor de portat pe alte platforme/alte compilatoare. Aici framework-urile de Microsoft stau cam slab si probabil in timp vor pierde interesul dezvoltatorilor.

Dă-i un răspuns lui Mihai Balan Cancel Reply

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *