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ă.
OCR, GTK şi alte acronime Read More »