Tesseract: En gratis OCR-lösning
Introduktion
Tessereact anses vara en av de bästa OCR-lösningarna som finns tillgängliga. Sedan 2006 sponsras det av Google, tidigare utvecklades det av Hewlett Packard i C och C ++ mellan 1985 och 1998. Systemet kan identifiera jämn handskrift, det kan lära sig öka dess noggrannhet och är bland de mest utvecklade och kompletta på marknaden.
Det slår lätt kommersiella konkurrenter som ABBY, om du letar efter en seriös lösning för OCR är Tesseract den mest exakta, men förvänta dig inte för massiva lösningar: den använder en kärna per process, vilket innebär en 8-kärnig processor (hypertrådning accepteras) kommer att kunna bearbeta 8 eller 16 bilder samtidigt.
När jag använde Tesseract lyckades vi tusentals potentiella kunder som laddade upp handskrivet innehåll, bilder med text osv. Vi använde 48 kärnservrar, med DatabaseByDesign och sedan med AWS, vi hade aldrig ett resursproblem.
Vi hade en uppladdare som diskriminerade mellan textfiler som Microsoft Office eller Open Office-filer och bilder eller skannade dokument. Uppladdaren bestämde vad OCR- eller PHP-skript som skulle behandla en beställning inom textigenkänning.
Tesseact är en bra lösning, men innan du tänker på det måste du veta att senaste Tesseracts versioner medförde stora förbättringar, några av dem betyder hårt arbete. Även om träning kan pågå i timmar eller dagar, kan den senaste versionen av Tessercts versionsträning vara dagar, veckor eller till och med månader om du letar efter en flerspråkig OCR-lösning.
Installera Tesseract 4 på Debian / Ubuntu:
apt-get install tesseract-ocrOm du använder en annan Linux-distribution måste du kopiera den senaste versionen av github-arkivet och kopiera den .utbildad datafil till 'tessdata' (/ usr / share / tesseract-ocr / tessdata eller / usr / share / tessdata).
Som standard installerar Tesseract det engelska språkpaketet för att installera ytterligare körningar
apt-get install tesseract-ocr-LANGtill exempel för att lägga till hebreiska:
apt-get install tesseract-ocr-hebDu kan inkludera alla språk genom att köra:
apt-get install tesseract-ocr-all
För att Tesseract ska fungera ordentligt måste vi använda kommandot ”konvertera” (konvertera mellan bildformat samt ändra storlek på en bild, oskärpa, beskära, avpeckla, dithra, dra på, vänd, gå med, prova om och mycket mer) från Imagemagick:
Låt oss installera imagemagick med apt-get:
apt-get install imagemagickLåt oss nu testa Tesseract, hitta en bild som innehåller text och kör:
tesseract [image_name] [output file_name]Om Tesseract är installerat korrekt extraherar det texten från bilden.
När jag arbetade med Tesseract var allt vi behövde att ordräkna dokument. Som med alla andra program kan du, och måste, träna det, i Word kan vi definiera några symboler som kan räknas eller inte, om man ska räkna eller inte siffror, etc. samma sak med Tesseract.
Vi kan också träna känsligheten för specifika bilder.
Optimering av Tesseract:
Storleksoptimering: Enligt officiella källor är den optimala pixelstorleken för en bild som ska behandlas framgångsrikt av Tesseract 300DPI. Vi måste bearbeta vilken bild som helst med parametern -r för att genomdriva denna DPI. Att öka DPI kommer också att öka behandlingstiden.
Sidrotation: Om sidan skannades inte ordentligt och förblir 180 ° eller 45 ° kommer Tesseracts noggrannhet att minska, du kan använda detta Python-skript för att automatiskt upptäcka och åtgärda rotationsproblem.
Gränsborttagning: Enligt Tesseracts officiella man kan gränserna felaktigt väljas som karaktärer, särskilt mörka gränser och där det finns variation i gradering. Att ta bort gränser kan vara ett bra steg för att uppnå maximal noggrannhet med Tesseract.
Ta bort buller: Enligt Tesseracts är buller "slumpmässig variation av ljusstyrka eller färg i en bild". Vi kan ta bort det i binärisering steg, vilket innebär att man polariserar färgerna.
Träning Tesseract:
Medan de flesta tutorials endast täcker Tesseracts installation, kommer jag att sammanfatta hur du tränar ditt OCR-system, här kan vi hitta en handledning för alla versioner. I den här artikeln sammanfattar jag hur man tränar Tesseract 4 som innehåller en ny ”Neurala nätverksbaserade igenkänningsmotorer som ger betydligt högre noggrannhet (på dokumentbilder) än tidigare versioner, i utbyte mot en betydande ökning av erforderlig beräkningskraft. På komplexa språk kan det dock faktiskt vara snabbare än bas Tesseract.”
Innan vi fortsätter måste vi installera ytterligare bibliotek:
sudo apt-get install libicu-devsudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev
Och vi kommer att installera träningsverktygen genom att köra inom Tesseract-katalogen:
göragöra träning
sudo gör träningsinstallation
Enligt Tesseracts officiella wiki har vi tre aktuella alternativ för att träna vårt OCR-system:
- "Finjustera. Börja med ett befintligt utbildat språk, träna på dina specifika tilläggsdata. Detta kan fungera för problem som ligger nära befintliga träningsdata, men skiljer sig på något subtilt sätt, som ett särskilt ovanligt teckensnitt. Fungerar även med en liten mängd träningsdata.
- Klipp av det översta lagret (eller något godtyckligt antal lager) från nätverket och omskola ett nytt topplager med hjälp av de nya data. Om finjustering inte fungerar är det troligtvis det näst bästa alternativet. Att klippa av det översta lagret kan fortfarande fungera för att träna ett helt nytt språk eller manus, om du börjar med det mest liknande utseendet.
- Omskola från grunden. Det här är en skrämmande uppgift, såvida du inte har en mycket representativ och tillräckligt stor träningssats för ditt problem. Om inte, kommer du sannolikt att sluta med ett överanpassat nätverk som fungerar riktigt bra på träningsdata, men inte på faktiska data.
Även om ovanstående alternativ kan låta annorlunda är träningsstegen faktiskt nästan identiska, förutom kommandoraden, så det är relativt enkelt att prova på alla sätt, med tanke på tid eller hårdvara att köra dem parallellt.”
I den här handledningen kör vi bara tesstrain.sh-skript som kommer att anropa nödvändiga program för att träna ett specifikt språk.
Först och främst kan vi klona alla filer i vår / usr / share / tesseract-ocr:
git klon https: // github.com / tesseract-ocr / tesseract
Gå till / usr / share / tesseract-ocr / tesseract / training (Tesseracts standardinstallationskatalog) och kör:
$ ./ tesstrain.sh --lang heb --langdata_dir / usr / share / tesseract-ocr / langdata --tessdata_dir / usr / share / tesseract-ocr / tessdata
Ändra “heb” för det språk du vill träna och redigera även sökvägen till dina data.
Inom katalogen / usr / dela / tesseract-ocr / tesseract / träning du hittar filspecifikt.sh användbart för att lägga till regler för specifika språk.
Felsökning
Tesseract är för mig den bästa OCR-lösningen, men nyligen gjorde den stora förändringar från tidigare versioner och många användare klagar över förändringar eller saker som inte längre fungerar, jag skulle inte oroa mig eftersom ändringarna verkar ge bra resultat. Tesseracts community är mycket aktiv, om du hittar problem med att köra tesseract, bli en del av Tesseracts community här.