Puteți utiliza motorul Tesseract OCR pentru a converti textul din imagini în text editabil direct din linia de comandă Linux. Acest instrument este rapid, precis și compatibil cu aproximativ 100 de limbi. În continuare, vă vom arăta cum să-l folosiți eficient.
Recunoașterea optică a caracterelor
Recunoașterea optică a caracterelor (OCR) reprezintă procesul prin care un computer analizează o imagine, identifică textul și îl convertește într-un format editabil. Această operație, simplă pentru oameni, este o provocare complexă pentru computere. Primele încercări în acest domeniu s-au dovedit dificile, deoarece software-ul OCR era adesea derutat de variațiile de font sau dimensiune.
Cu toate acestea, primii cercetători în domeniul OCR au fost foarte apreciați pentru munca lor. Dacă, de exemplu, ați pierdut versiunea electronică a unui document, dar aveți o copie tipărită, OCR ar putea recrea o versiune electronică editabilă. Chiar dacă nu era perfectă, această tehnologie oferea o modalitate rapidă de a economisi timp.
Cu mici corecții manuale, documentul putea fi readus în format electronic. Oamenii erau îngăduitori cu erorile, conștienți de dificultatea pe care o implică procesul OCR. În plus, era o soluție mult mai rapidă decât tastarea manuală a întregului document.
Tehnologia OCR a evoluat semnificativ. Aplicația Tesseract OCR, creată de Hewlett Packard, a apărut inițial ca un produs comercial în anii 1980. În 2005, a devenit open-source, iar acum este susținută de Google. Tesseract este recunoscut pentru suportul său în diverse limbi, precizia ridicată și disponibilitatea gratuită.
Instalarea Tesseract OCR
Pentru a instala Tesseract OCR pe Ubuntu, folosiți următoarea comandă:
sudo apt-get install tesseract-ocr
Pe Fedora, comanda necesară este:
sudo dnf install tesseract
Pentru Manjaro, utilizați următoarea comandă:
sudo pacman -Syu tesseract
Utilizarea Tesseract OCR
Vom evalua capacitățile Tesseract OCR. Prima imagine pe care o vom folosi este un extras din considerentul 63 al Regulamentului General privind Protecția Datelor. Vom verifica dacă OCR reușește să citească textul corect.
Această imagine este dificilă deoarece fiecare propoziție începe cu un număr în superscript, tipic pentru documentele legislative.
Pentru a folosi comanda tesseract, trebuie să oferim câteva informații, printre care:
- Numele fișierului imagine pe care dorim să-l procesăm.
- Numele fișierului text în care va fi salvat textul extras. Extensia fișierului nu trebuie specificată, deoarece va fi întotdeauna .txt. Dacă există deja un fișier cu același nume, acesta va fi suprascris.
- Putem folosi opțiunea –dpi pentru a specifica rezoluția imaginii în puncte pe inch (dpi). Dacă nu specificăm o valoare dpi, tesseract va încerca să o determine singur.
Fișierul nostru imagine se numește „recital-63.png” și are o rezoluție de 150 dpi. Vom crea un fișier text numit „recital.txt”.
Comanda noastră arată astfel:
tesseract recital-63.png recital --dpi 150
Rezultatele sunt foarte bune. Singura problemă sunt superscriptele, care au fost prea puțin vizibile pentru a fi citite corect. Calitatea imaginii este esențială pentru obținerea unor rezultate precise.
Tesseract a interpretat numerele în superscript ca ghilimele (“) și simboluri de grade (°), dar textul propriu-zis a fost extras perfect (partea din dreapta a imaginii a fost tăiată pentru a se încadra aici).
Caracterul final este un octet cu valoarea hexazecimală 0x0C, reprezentând un carriage return.
Mai jos este o altă imagine cu text de diferite dimensiuni, inclusiv bold și italic.
Acest fișier se numește „bold-italic.png”. Dorim să creăm un fișier text numit „bold.txt”, deci comanda noastră va fi:
tesseract bold-italic.png bold --dpi 150
Această operațiune nu a ridicat probleme, iar textul a fost extras perfect.
Utilizarea diferitelor limbi
Tesseract OCR suportă aproximativ 100 de limbi. Pentru a utiliza o anumită limbă, trebuie să o instalați mai întâi. Când găsiți limba dorită în listă, rețineți abrevierea acesteia. Vom instala suport pentru limba galeză. Abrevierea sa este „cym”, care este prescurtarea de la „Cymru”, cuvântul galez pentru Țara Galilor.
Pachetul de instalare se numește „tesseract-ocr-”, urmat de abrevierea limbii. Pentru a instala pachetul pentru limba galeză în Ubuntu, vom folosi:
sudo apt-get install tesseract-ocr-cym
Imaginea cu textul este prezentată mai jos. Acesta este primul vers din imnul național al Țării Galilor.
Să vedem cum se descurcă Tesseract OCR cu această provocare. Vom folosi opțiunea -l (pentru limbă) pentru a specifica limba în care dorim să lucrăm:
tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150
Tesseract se descurcă perfect, după cum se vede în textul extras de mai jos. Bravo, Tesseract OCR!
Dacă documentul conține două sau mai multe limbi (de exemplu, un dicționar din galeză în engleză), puteți folosi semnul plus (+) pentru a indica lui tesseract să adauge o altă limbă, astfel:
tesseract image.png textfile -l eng+cym+fra
Utilizarea Tesseract OCR cu fișiere PDF
Comanda tesseract este concepută pentru a funcționa cu fișiere imagine, dar nu poate citi PDF-uri. Cu toate acestea, dacă aveți nevoie să extrageți text dintr-un PDF, puteți folosi un alt instrument pentru a genera un set de imagini, fiecare reprezentând o pagină a PDF-ului.
Instrumentul pdftoppm, care este de obicei preinstalat pe sistemele Linux, va fi folosit. PDF-ul pe care îl vom folosi ca exemplu este o copie a lucrării fundamentale a lui Alan Turing despre inteligența artificială, „Computing Machinery and Intelligence”.
Vom folosi opțiunea -png pentru a indica că dorim să creăm fișiere PNG. Numele fișierului nostru PDF este „turing.pdf”. Vom denumi fișierele imagine create „turing-01.png”, „turing-02.png” și așa mai departe:
pdftoppm -png turing.pdf turing
Pentru a rula tesseract pe fiecare fișier imagine folosind o singură comandă, vom utiliza o buclă for. Pentru fiecare fișier „turing-nn.png”, rulăm tesseract și creăm un fișier text numit „text-” plus numele fișierului imagine:
for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;
Pentru a combina toate fișierele text într-unul singur, putem folosi comanda cat:
cat text-turing* > complete.txt
Filigranul vertical a fost transcris ca o linie de caractere în partea de jos a paginii. Textul era prea mic pentru a fi citit corect de tesseract, dar ar fi ușor de identificat și eliminat. Cel mai rău scenariu ar fi fost prezența unor caractere aleatorii la sfârșitul fiecărei linii.
Curios, literele unice de la începutul listei de întrebări și răspunsuri de pe a doua pagină au fost ignorate. Secțiunea din PDF este afișată mai jos.
După cum se vede mai jos, întrebările rămân, dar „Q” și „A” de la începutul fiecărei linii au fost eliminate.
De asemenea, diagramele nu vor fi transcrise corect. Să vedem ce se întâmplă când încercăm să extragem diagrama de mai jos din PDF-ul lui Turing.
După cum se vede în rezultatul de mai jos, caracterele au fost citite, dar formatul diagramei a fost pierdut.
Din nou, tesseract s-a luptat cu dimensiunea mică a subscriptelor, care au fost redate incorect.
Pentru a fi corecți, rezultatul a fost, în general, bun. Deși nu am reușit să extragem textul perfect, acest exemplu a fost ales în mod intenționat ca o provocare.
O soluție utilă când aveți nevoie de ea
OCR nu este o tehnologie pe care trebuie să o folosiți zilnic. Cu toate acestea, atunci când este necesar, este important să știți că aveți la dispoziție unul dintre cele mai bune motoare OCR.