Siteuri partenere

Pentru a va inscrie pe Ubuntu One puteti da click aici (referal) și câștigăm amândoi câțiva MB spațiu de stocare.

miercuri, 7 martie 2012

OCR (Optical Character Recognition) in Ubuntu

La un moment dat se poate să ne întâlnim cu următoarea situație: avem un document scanat care trebuie editat/modificat și apoi printat din nou, dar este prea lung pentru a fi scris din nou cap-coadă. Soluția cea mai potrivită ar fi OCR-ul - optical character recognition, sau mai pe limba noastră, recunoașterea optică a caracterelor. Pe scurt, asta înseamnă că un soft special "citește" documentul scanat (fișiere în format «poză» - .jpg, .png, .tiff., .bmp, etc. ) și încearcă să recunoască literele/cuvintele din acestea, păstrând în același timp și așezarea în pagină, formatarea ș.a.m.d. Rezultatul poate fi transmis către un editor de texte gen Word/LibreOffice Writer sau Wordpad/Notepad.
Cei care au lucrat/mai lucrează pe Windows poate știu de Abby FineReader, multă vreme cel mai utilizat soft de acest gen, dar acesta costă destul. Există și o versiune de Linux, dar se pare că și asta este pe bani. Și atunci ce facem? Avem doua variante: 
1. trecem pe Windows, scoatem bani mulți din buzunar și rezolvăm treaba sau
2. căutam în Software Center din Ubuntu și găsim cuneiform, gocr, ocrfeeder și tesseract-ocr. Dintre acestea, ocrfeeder este un GUI (interfață grafică) pentru celelalte softuri care nu sunt altceva decât sistemele de OCR propriu-zise. Înainte de a trece la discuția în detaliu, să vedem ce trebuie să facă un program OCR bun:
  • în primul rând să recunoască destul de exact tipul de font utilizat și layout-ul (așezarea în pagină a textului), inclusiv imagini, tabele, note de subsol, etc.
  • să poată lucra cu diferite tipuri de fișiere-imagine - jpg, tiff, png, bmp, etc.
  • să poată trimite textul recunoscut la un editor de text ca LibreOffice Writer
  • să poată face OCR în mai multe limbi, nu doar engleză (cum este de obicei).

Câteva date despre softuri, așa cum apar ele în Synaptic:
cuneiform - Cuneiform is an OCR system. In addition to text recognition it also does layout analysis and text format recognition.
The following languages are supported: Bulgarian, Croatian, Czech, Danish,
Dutch, English, Estonian, French, German, Hungarian, Italian, Latvian,
Lithuanian, Polish, Portuguese, Romanian, Russian, Serbian, Slovenian,
Spanish, Swedish, Turkish and Ukrainian.
gocr - gocr is a multi-platform OCR (Optical Character Recognition) program.
It can read pnm, pbm, pgm, ppm, some pcx and tga image files.
Currently the program should be able to handle well scans that have their text in one column and do not have tables. Font sizes of 20 to 60
pixels are supported.
If you want to write your own OCR, libgocr is provided in a separate
package. Documentation and graphical wrapper are provided in separated packages, too.
tesseract-ocr - The Tesseract OCR engine was one of the top 3 engines in the 1995 UNLV Accuracy test. Between 1995 and 2006 it had little work done on it, but since then it has been improved extensively by Google and is probably one of the most accurate open source OCR engines available. It can read a wide variety of image formats and convert them to text in over 40 languages.
În plus, tesseract-ocr are și cel mai cuprinzător set de dicționare/limbi de recunoaștere.
Și acum un test făcut cu cele trei softuri din Ubuntu - cuneiform, gocr și tesseract. Prima dată le instalăm cu
sudo apt-get install tesseract-ocr gocr cuneiform ocrfeeder
Observație: aceste programe pot fi rulate și din linie de comandă (CLI), dar este mai ușor să instalăm și ocrfeeder, interfața grafică pentru toate trei.
Testul a fost făcut pe o pagină A4 scanată la 300 dpi, text negru (8bit) pe o multifuncțională Lexmark X1270 (deci destul de veche). Am încercat mai multe tipuri de fișiere - jpg, bmp și png. 
Rezultatele? Cum o imagine valorează cât o mine de cuvinte, iată imaginile:

Primul test a fost făcut cu gocr (putem alege utilitarul OCR din meniul de la mijlocul ferestrei) - rezultatele vorbesc de la sine, nu merită încercat, poate și pentru că nu erau formate suportate de fișeire grafice:

gocr are rezultate slabe



Al doilea test este în cuneiform:
 
cuneiform are rezultate mai bune

Al treilea test este făcut cu tesseract-ocr:
 
tesseract-ocr este la fel de bun

Așa cum se observă din imagini, cuneiform și tesseract-ocr au avut cele mai bune rezultate la recunoașterea textului, având foarte puține cuvinte recunoscute greșit (cele subliniate cu roșu). Concluzia ar fi că sunt la fel de bune. Personal, prefer pe tesseract-ocr din simplul motiv că ...păi n-am niciun motiv, așa mi-a venit mie. O să mă decid definitiv când fac proba și cu un text în limba română, textul de acum fiind în engleză, că am zis că dacă nu merge bine în engleză nu are rost să mă complic cu româna. 
Dacă mai știți și alte softuri de gen, dați un semn. Spor!

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More