Tesseract: En gratis OCR-løsning
Introduktion
Tessereact betragtes som en af de bedste tilgængelige OCR-løsninger. Siden 2006 er det sponsoreret af Google, tidligere blev det udviklet af Hewlett Packard i C og C ++ mellem 1985 og 1998. Systemet er i stand til at identificere selv håndskrift, det kan lære at øge dets nøjagtighed og er blandt de mest udviklede og komplette på markedet.
Det slår let kommercielle konkurrenter som ABBY, hvis du er på udkig efter en seriøs løsning til OCR, er Tesseract den mest nøjagtige, men forvent ikke til massive løsninger: den bruger en kerne pr. Proces, hvilket betyder en 8-kerne processor (hyperthreading accepteret) vil kunne behandle 8 eller 16 billeder samtidigt.
Da jeg brugte Tesseract, administrerede vi tusindvis af potentielle kunder, der uploader håndskrevet indhold, billeder med tekst osv. Vi brugte 48 kerneservere, med DatabaseByDesign og derefter med AWS, vi havde aldrig et ressourceproblem.
Vi havde en uploader, der diskriminerede mellem tekstfiler som Microsoft Office eller Open Office-filer og billeder eller scannede dokumenter. Uploader bestemte, hvad OCR- eller PHP-scripts ville behandle en ordre inden for tekstgenkendelse.
Tesseact er en god løsning, men inden du tænker over det, skal du vide, sidste Tesseracts versioner bragte store forbedringer, nogle af dem betyder hårdt arbejde. Mens træning kan vare i timer eller dage, kan den seneste Tessercts versionstræning være dage, uger eller endda måneder, hvis du leder efter en flersproget OCR-løsning.
Installation af Tesseract 4 på Debian / Ubuntu:
apt-get install tesseract-ocrHvis du bruger en anden Linux-distribution, skal du kopiere den sidste version af github-arkivet og kopiere .uddannet datafil til 'tessdata' (/ usr / share / tesseract-ocr / tessdata eller / usr / share / tessdata).
Som standard installerer Tesseract den engelske sprogpakke for at installere yderligere sprogkørsel
apt-get install tesseract-ocr-LANGfor eksempel at tilføje hebraisk:
apt-get install tesseract-ocr-hebDu kan inkludere alle sprog ved at køre:
apt-get install tesseract-ocr-all
For at Tesseract skal fungere ordentligt, skal vi bruge kommandoen "konvertere" (konvertere mellem billedformater samt ændre størrelsen på et billede, sløre, beskære, afpeckle, rulle, trække på, vende, sammenføje, genprøve og meget mere) leveret af Imagemagick:
Lad os installere imagemagick med apt-get:
apt-get installer imagemagickLad os nu teste Tesseract, find et billede, der indeholder tekst og kør:
tesseract [image_name] [output file_name]Hvis Tesseract er installeret korrekt, udtrækker teksten fra billedet.
Da jeg arbejdede med Tesseract, var alt, hvad vi havde brug for, orddokumenter. Som med ethvert andet program kan du og skal træne det, i Word kan vi definere nogle symboler, der kan tælles eller ej, hvis der skal tælles eller ikke tal osv. det samme med Tesseract.
Vi kan også træne dets følsomhed over for bestemte billeder.
Tesseract-optimering:
Størrelsesoptimering: Ifølge officielle kilder er den optimale pixelstørrelse for et billede, der skal behandles med succes af Tesseract, 300DPI. Vi bliver nødt til at behandle ethvert billede ved hjælp af -r-parameteren for at håndhæve denne DPI. Forøgelse af DPI vil også øge behandlingstiden.
Siderotation: Hvis siden scannet ikke blev roteret ordentligt og forbliver 180 ° eller 45 °, vil Tesseracts nøjagtighed falde, du kan bruge dette Python-script til automatisk at registrere og rette rotationsproblemer.
Fjernelse af grænser: Ifølge Tesseracts officielle mand kan grænser fejlagtigt vælges som tegn, især mørke grænser, og hvor der er gradering variation. Fjernelse af grænser kan være et godt skridt for at opnå maksimal nøjagtighed med Tesseract.
Fjernelse af støj: Ifølge Tesseracts er støj "tilfældig variation af lysstyrke eller farve i et billede". Vi kan fjerne det i binærisering trin, hvilket betyder at polarisere dets farver.
Træning Tesseract:
Mens de fleste tutorials kun dækker Tesseracts installation, vil jeg opsummere, hvordan du træner dit OCR-system, her kan vi finde en tutorial til alle versioner. I denne artikel opsummerer jeg, hvordan man træner Tesseract 4, som inkluderer en ny ”Neuralt netværksbaseret genkendelsesmotor, der leverer væsentligt højere nøjagtighed (på dokumentbilleder) end de tidligere versioner til gengæld for en betydelig stigning i den krævede beregningskraft. På komplekse sprog kan det dog faktisk være hurtigere end base Tesseract.”
Før vi fortsætter, skal vi installere yderligere biblioteker:
sudo apt-get install libicu-devsudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev
Og vi installerer træningsværktøjerne ved at køre inden for Tesseract-biblioteket:
lavelave træning
sudo lave træningsinstallation
Ifølge Tesseracts officielle wiki har vi 3 aktuelle muligheder for at træne vores OCR-system:
- “Finjuster. Start med et eksisterende trænet sprog, træne på dine specifikke yderligere data. Dette fungerer muligvis for problemer, der er tæt på de eksisterende træningsdata, men forskellige på en subtil måde, som en særlig usædvanlig skrifttype. Kan arbejde med selv en lille mængde træningsdata.
- Afskær det øverste lag (eller noget vilkårligt antal lag) fra netværket, og omskol et nyt toplag ved hjælp af de nye data. Hvis finjustering ikke virker, er dette sandsynligvis den næstbedste mulighed. Afskæring af det øverste lag kan stadig fungere til træning af et helt nyt sprog eller script, hvis du starter med det mest lignende script.
- Omskoles fra bunden. Dette er en skræmmende opgave, medmindre du har et meget repræsentativt og tilstrækkeligt stort træningssæt til dit problem. Hvis ikke, vil du sandsynligvis ende med et overudstyret netværk, der fungerer rigtig godt på træningsdataene, men ikke på de faktiske data.
Selvom ovenstående muligheder måske lyder anderledes, er træningstrinnene faktisk næsten identiske bortset fra kommandolinjen, så det er relativt let at prøve det på alle måder, givet tid eller hardware til at køre dem parallelt.”
I denne vejledning kører vi kun tesstrain.sh-script, der kalder nødvendige programmer til at træne et bestemt sprog.
Først og fremmest kan vi klone alle filerne i vores / usr / share / tesseract-ocr:
git klon https: // github.com / tesseract-ocr / tesseract
Gå til / usr / share / tesseract-ocr / tesseract / training (Tesseracts standardinstallationsmappe) og kør:
$ ./ tesstrain.sh --lang heb --langdata_dir / usr / share / tesseract-ocr / langdata --tdatadata_dir / usr / share / tesseract-ocr / tessdata
Skift "heb" for det sprog, du vil træne, og rediger også stien til dine data.
Inden for biblioteket / usr / share / tesseract-ocr / tesseract / træning du finder filsprogsspecifik.Det er nyttigt at tilføje regler til bestemte sprog.
Fejlfinding
Tesseract er for mig den bedste OCR-løsning, men for nylig lavede den store ændringer fra de tidligere versioner, og mange brugere klager over ændringer eller ting, der ikke længere fungerer, jeg ville ikke bekymre mig, da ændringerne ser ud til at give gode resultater. Tesseracts samfund er meget aktiv, hvis du finder problemer med at køre tesseract, skal du blive en del af Tesseracts samfund her.