14/05/2022
Tesseract OCR, un motor puternic de recunoaștere optică a caracterelor, a evoluat semnificativ odată cu versiunea 4, introducând arhitectura de rețea neuronală recurentă (LSTM). Această schimbare a adus îmbunătățiri majore în acuratețe, dar a modificat și procesul de antrenare. Dacă dorești să obții rezultate precise pentru documente specifice, fonturi neobișnuite sau limbi cu o structură complexă, antrenarea Tesseract 4 devine o necesitate. Acest ghid detaliază pașii esențiali și conceptele cheie pentru a-ți antrena propriul model Tesseract 4, transformându-te dintr-un simplu utilizator într-un maestru al recunoașterii optice a caracterelor.

- Prezentare Generală a Procesului de Antrenare
- Înțelegerea Diferitelor Fișiere Utilizate în Timpul Antrenării
- Crearea Fișierelor Box
- Utilizarea Scriptului tesstrain.sh
- Fișierele Traineddata pentru Versiunea 4.00 și Ulterioare
- Formatul Fișierelor Traineddata
- Instalarea Datelor de Antrenament Tesseract pe Linux
- Întrebări Frecvente (FAQ)
- Concluzie
Prezentare Generală a Procesului de Antrenare
Antrenarea Tesseract 4, deși conceptual similară cu versiunile anterioare, aduce o serie de diferențe fundamentale, în special prin adoptarea modelelor LSTM. Procesul general implică crearea de date de antrenament și apoi utilizarea acestora pentru a rafina sau a crea un nou model. Iată pașii principali:
- Pregătirea textului de antrenament: Acesta reprezintă corpul de text pe care Tesseract îl va "învăța". Cu cât este mai reprezentativ pentru datele pe care le vei procesa ulterior, cu atât mai bune vor fi rezultatele.
- Randarea textului în imagini și fișiere .box: Textul pregătit este convertit în imagini (de obicei, fișiere .tiff) și, simultan, se creează fișiere .box asociate. Aceste fișiere .box conțin coordonatele cutiilor de delimitare pentru fiecare caracter sau, în cazul LSTM, pentru fiecare linie de text.
- Crearea fișierului unicharset: Acest fișier definește setul de caractere unice pe care Tesseract ar trebui să le recunoască. Poate fi generat automat sau specificat parțial manual.
- Crearea unui fișier traineddata de bază (starter traineddata): Acesta este un model inițial construit din unicharset și, opțional, date de dicționar. Servește ca punct de plecare pentru procesul de antrenare.
- Rularea Tesseract pentru a procesa imaginea și fișierul .box pentru a crea setul de date de antrenament: În această etapă, Tesseract generează datele de antrenament efective, care, pentru LSTM, sunt fișierele .lstmf.
- Rularea antrenării pe setul de date de antrenament: Acesta este pasul cel mai intensiv din punct de vedere computațional, unde modelul LSTM este ajustat folosind datele generate.
- Combinarea fișierelor de date: La final, toate componentele necesare sunt combinate într-un singur fișier .traineddata, gata de utilizare.
Diferențele cheie față de Tesseract 3 sunt notabile: fișierele .box necesită doar delimitarea la nivel de linie de text, simplificând crearea datelor de antrenament din imagini existente; fișierele .tr sunt înlocuite cu fișiere .lstmf; fonturile pot și ar trebui să fie amestecate liber, nu separate; iar etapele de clustering (mftraining, cntraining, shapeclustering) sunt înlocuite cu un singur pas lent de lstmtraining.
Înțelegerea Diferitelor Fișiere Utilizate în Timpul Antrenării
Modelul LSTM finalizat și toate celelalte componente de care are nevoie Tesseract sunt colectate în fișierul .traineddata. Spre deosebire de Tesseract de bază, un fișier .traineddata de pornire este necesar în timpul antrenării și trebuie configurat în prealabil. Acesta poate conține:
- Fișier de configurare: Oferă parametri de control pentru recunoaștere.
- Unicharset: Definește setul de caractere pe care Tesseract le poate recunoaște. Aceasta este o componentă obligatorie.
- Unicharcompress (recoder): Mapează unicharset-ul la codurile utilizate efectiv de rețeaua neuronală. Aceasta este o componentă obligatorie dacă sunt furnizate oricare dintre fișierele dawg.
- Punctuation pattern dawg: Conține modele de punctuație permise în jurul cuvintelor.
- Word dawg: Modelul lingvistic al sistemului, cu lista de cuvinte.
- Number dawg: Modele de numere permise.
Fișierele unicharset și unicharcompress (recoder) sunt esențiale. Celelalte fișiere de tip 'dawg' sunt opționale, dar dacă oricare dintre ele este furnizat, fișierul punctuation dawg trebuie, de asemenea, să fie prezent. Un instrument nou, combine_lang_model, este furnizat pentru a crea un fișier traineddata de pornire dintr-un unicharset și liste de cuvinte opționale.
Crearea Fișierelor Box
Tesseract 4 acceptă mai multe formate de fișiere box pentru antrenarea LSTM, deși acestea sunt diferite de cele utilizate de Tesseract 3. Fiecare linie din fișierul box corespunde unui 'caracter' (glifă) din imaginea TIFF. Acestea pot fi coordonatele de delimitare ale unei singure glife sau ale unei întregi linii de text. Pentru a marca sfârșitul unei linii de text, trebuie inserată o linie specială după o serie de linii. Este important de reținut că, în toate cazurile, chiar și pentru limbile de la dreapta la stânga, cum ar fi araba, transcrierea textului pentru linie ar trebui să fie ordonată de la stânga la dreapta. Rețeaua va învăța de la stânga la dreapta, indiferent de limbă, iar gestionarea direcției de scriere se face la un nivel superior în cadrul Tesseract.

Utilizarea Scriptului tesstrain.sh
Configurarea pentru rularea tesstrain.sh este similară cu cea pentru Tesseract de bază. Pentru antrenarea LSTM, se utilizează opțiunea --linedata_only. Este benefic să ai mai mult text de antrenament și să generezi mai multe pagini, deoarece rețelele neuronale nu generalizează la fel de bine și trebuie să se antreneze pe ceva similar cu ceea ce vor procesa ulterior. Dacă domeniul țintă este sever limitat, atunci avertismentele despre necesitatea unei cantități mari de date de antrenament s-ar putea să nu se aplice, dar specificația rețelei ar putea necesita modificări.
Datele de antrenament sunt create folosind tesstrain.sh după cum urmează:
src/training/tesstrain.sh --fonts_dir /usr/share/fonts --lang eng --linedata_only \ --noextract_font_properties --langdata_dir ../langdata \ --tessdata_dir ./tessdata --output_dir ~/tesstutorial/engtrainComanda de mai sus creează date de antrenament LSTM echivalente cu datele utilizate pentru a antrena Tesseract de bază pentru limba engleză. Pentru crearea unui motor OCR bazat pe LSTM de uz general, aceasta este insuficientă, dar este bună pentru o demonstrație tutorială.
Pentru a crea date de evaluare pentru fontul 'Impact', poți încerca următoarea comandă:
src/training/tesstrain.sh --fonts_dir /usr/share/fonts --lang eng --linedata_only \ --noextract_font_properties --langdata_dir ../langdata \ --tessdata_dir ./tessdata \ --fontlist "Impact Condensed" --output_dir ~/tesstutorial/engevalAceste date de evaluare pot fi folosite ulterior pentru demonstrarea ajustării modelului.

Fișierele Traineddata pentru Versiunea 4.00 și Ulterioare
Există trei seturi de fișiere .traineddata oficiale, antrenate la Google, pentru Tesseract versiunile 4.00 și ulterioare. Acestea sunt disponibile în trei depozite separate, fiecare cu caracteristici distincte:
- tessdata_fast (Septembrie 2017): Oferă cel mai bun "raport calitate-preț" în ceea ce privește viteza și acuratețea. Conține modele întregi (Integer models), fiind ideal pentru majoritatea utilizatorilor care prioritizează viteza.
- tessdata_best (Septembrie 2017): Oferă cele mai bune rezultate pe datele de evaluare Google, dar este mai lent. Conține modele în virgulă mobilă (Float models). Acestea sunt singurele modele care pot fi utilizate ca bază pentru antrenarea fină (finetune training).
- tessdata (Noiembrie 2016 și Septembrie 2017): Acestea conțin modele Tesseract moștenite din 2016. Modelele LSTM au fost actualizate cu versiunea Integer a modelelor LSTM din
tessdata_best. Este singurul set care suportă și motorul de recunoaștere moștenit (--oem 0).
Este crucial de reținut că, atunci când se utilizează fișierele .traineddata din depozitele tessdata_best și tessdata_fast, este acceptat doar noul motor OCR bazat pe LSTM (--oem 1). Motorul Tesseract moștenit (--oem 0) NU este suportat cu aceste fișiere, deci modurile oem '0' și '2' ale Tesseract nu vor funcționa cu ele.
Fișiere de Date Speciale
Pe lângă modelele lingvistice, Tesseract oferă și fișiere de date specializate:
osd.traineddata: Pentru detectarea orientării și a scriptului (Orientation and Script Detection). Compatibil cu versiunea 3.01 și ulterioare.equ.traineddata: Pentru detectarea ecuațiilor matematice. Compatibil cu versiunea 3.02 și ulterioare.
Pentru a rezuma diferențele cheie între cele trei seturi de modele .traineddata, consultați tabelul de mai jos:
| Model | Viteză | Acuratețe | Suportă motorul moștenit | Re-antrenabil (finetune) |
|---|---|---|---|---|
| tessdata | Mai rapid decât tessdata-best | Puțin mai puțin precis decât tessdata-best | Da | Nu |
| tessdata_best | Cel mai lent | Cel mai precis | Nu | Da |
| tessdata_fast | Cel mai rapid | Cel mai puțin precis | Nu | Nu |
Majoritatea utilizatorilor vor prefera tessdata_fast, deoarece oferă un echilibru excelent între viteză și acuratețe pentru sarcini generale. tessdata_best este pentru cei dispuși să sacrifice multă viteză pentru o acuratețe marginal mai bună și este singurul set de fișiere care poate fi folosit pentru anumite scenarii de re-antrenare pentru utilizatorii avansați. Setul tessdata este singurul care oferă suport pentru recunoașterea moștenită, fiind util pentru compatibilitate cu proiecte mai vechi.
Formatul Fișierelor Traineddata
Fișierul .traineddata pentru fiecare limbă este de fapt un fișier arhivă într-un format specific Tesseract. Acesta conține mai multe fișiere componente necomprimate, care sunt necesare procesului OCR al Tesseract. Programul combine_tessdata este utilizat pentru a crea un fișier .tessdata din fișierele componente și poate, de asemenea, să le extragă din nou. Iată câteva exemple de extragere, demonstrând diferențele între formatele vechi și cele noi:
Formatul Pre-4.0.0 (din Noiembrie 2016, cu modele LSTM și Legacy)
combine_tessdata -u eng.traineddata eng. Extracting tessdata components from eng.traineddata Wrote eng.unicharset Wrote eng.unicharambigs Wrote eng.inttemp Wrote eng.pffmtable Wrote eng.normproto Wrote eng.punc-dawg Wrote eng.word-dawg Wrote eng.number-dawg Wrote eng.freq-dawg Wrote eng.cube-unicharset Wrote eng.cube-word-dawg Wrote eng.shapetable Wrote eng.bigram-dawg Wrote eng.lstm Wrote eng.lstm-punc-dawg Wrote eng.lstm-word-dawg Wrote eng.lstm-number-dawg Wrote eng.version Version string:Pre-4.0.0 1:unicharset:size=7477, offset=192 2:unicharambigs:size=1047, offset=7669 3:inttemp:size=976552, offset=8716 4:pffmtable:size=844, offset=985268 5:normproto:size=13408, offset=986112 6:punc-dawg:size=4322, offset=999520 7:word-dawg:size=1082890, offset=1003842 8:number-dawg:size=6426, offset=2086732 9:freq-dawg:size=1410, offset=2093158 11:cube-unicharset:size=1511, offset=2094568 12:cube-word-dawg:size=1062106, offset=2096079 13:shapetable:size=63346, offset=3158185 14:bigram-dawg:size=16109842, offset=3221531 17:lstm:size=5390718, offset=19331373 18:lstm-punc-dawg:size=4322, offset=24722091 19:lstm-word-dawg:size=7143578, offset=24726413 20:lstm-number-dawg:size=3530, offset=31869991 23:version:size=9, offset=31873521Formatul 4.00.00alpha (doar LSTM)
combine_tessdata -u eng.traineddata eng. Extracting tessdata components from eng.traineddata Wrote eng.lstm Wrote eng.lstm-punc-dawg Wrote eng.lstm-word-dawg Wrote eng.lstm-number-dawg Wrote eng.lstm-unicharset Wrote eng.lstm-recoder Wrote eng.version Version string:4.00.00alpha:eng:synth20170629:[1,36,0,1Ct3,3,16Mp3,3Lfys64Lfx96Lrx96Lfx512O1c1] 17:lstm:size=11689099, offset=192 18:lstm-punc-dawg:size=4322, offset=11689291 19:lstm-word-dawg:size=3694794, offset=11693613 20:lstm-number-dawg:size=4738, offset=15388407 21:lstm-unicharset:size=6360, offset=15393145 22:lstm-recoder:size=1012, offset=15399505 23:version:size=80, offset=15400517Observați că formatul mai nou, orientat exclusiv pe LSTM, are un număr redus de componente extrase, concentrându-se pe fișierele specifice LSTM. Aceasta simplifică structura și optimizează performanța pentru noul motor.

Instalarea Datelor de Antrenament Tesseract pe Linux
Pentru a utiliza Tesseract eficient, este esențial să ai instalate datele de antrenament corespunzătoare limbii pe care dorești să o recunoști. Pe sistemele Linux, datele de antrenament pot fi instalate direct prin managerul de pachete al distribuției tale, cum ar fi yum sau apt-get. De exemplu, pentru a instala datele de antrenament rapide (tessdata_fast) pentru limba spaniolă, ai folosi comenzi similare cu:
sudo apt-get install tesseract-ocr-spasau, pentru alte distribuții:
sudo yum install tesseract-langpack-spaImplicit, majoritatea sistemelor vin cu datele de antrenament pentru limba engleză. Pentru a îmbunătăți performanța OCR pentru alte limbi, pur și simplu instalează pachetul de limbă corespunzător. Poți alege între versiunile "fast" sau "best" ale datelor de antrenament, în funcție de cerințele tale de viteză și acuratețe, dacă distribuția ta le oferă ca pachete separate.
Întrebări Frecvente (FAQ)
- Q: De ce să-mi antrenez propriul model Tesseract 4?
- A: Antrenarea unui model personalizat este esențială atunci când ai de-a face cu fonturi neobișnuite, stiluri de text specifice, zgomot vizual particular sau limbi/dialecte care nu sunt bine reprezentate de modelele pre-antrenate. Un model antrenat specific pe datele tale poate îmbunătăți radical acuratețea recunoașterii.
- Q: Cât de multe date de antrenament sunt necesare?
- A: Rețelele neuronale, cum este LSTM, beneficiază enorm de pe urma unei cantități mari de date. Deși nu există o cifră magică, sute sau chiar mii de linii de text diverse, reprezentative pentru tipul de documente pe care le vei procesa, sunt recomandate pentru rezultate optime. Cu cât mai multe variații (fonturi, dimensiuni, stiluri), cu atât modelul va fi mai robust.
- Q: Pot folosi fișiere .box create pentru Tesseract 3 pentru a antrena Tesseract 4?
- A: Nu direct. Tesseract 4, pentru antrenarea LSTM, preferă fișiere .box cu delimitare la nivel de linie de text, nu la nivel de caracter individual, așa cum era obișnuit în Tesseract 3. Deși Tesseract 4 poate procesa fișiere .box vechi, este mai eficient și mai precis să generezi noi fișiere .box conform cerințelor LSTM (
--linedata_only). - Q: Ce este unicharset și de ce este important?
- A: Unicharset este un fișier care listează toate caracterele unice pe care modelul Tesseract ar trebui să le poată recunoaște. Este fundamental, deoarece Tesseract nu va putea recunoaște un caracter dacă acesta nu este inclus în unicharset-ul modelului. Dacă ai caractere speciale sau simboluri, asigură-te că sunt prezente în acest fișier.
- Q: Care este diferența principală între
tessdata_bestșitessdata_fast? - A:
tessdata_bestoferă cea mai mare acuratețe, dar este mai lent și necesită mai multe resurse. Este ideal pentru sarcini unde precizia este primordială.tessdata_fasteste mult mai rapid, dar puțin mai puțin precis. Este o alegere excelentă pentru majoritatea aplicațiilor generale unde viteza este un factor important. Reține că doartessdata_bestpoate fi folosit ca bază pentru re-antrenare.
Concluzie
Antrenarea Tesseract 4 deschide noi orizonturi pentru personalizarea și optimizarea recunoașterii optice a caracterelor. Prin înțelegerea procesului, a structurii fișierelor și a instrumentelor disponibile, poți crea modele OCR extrem de precise, adaptate nevoilor tale specifice. Deși procesul poate părea complex la început, beneficiile în termeni de acuratețe și performanță sunt considerabile, transformând documentele scanate în date editabile și căutabile cu o eficiență fără precedent. Investiția de timp în antrenarea Tesseract 4 este o investiție în precizia și automatizarea fluxurilor tale de lucru.
Dacă vrei să descoperi și alte articole similare cu Antrenează Tesseract 4: Ghid Complet OCR, poți vizita categoria Fitness.
