Tesseract: een gratis OCR-oplossing
Invoering
Tessereact wordt beschouwd als een van de beste beschikbare OCR-oplossingen. Sinds 2006 wordt het gesponsord door Google, voorheen werd het tussen 1985 en 1998 ontwikkeld door Hewlett Packard in C en C++. Het systeem is in staat om zelfs handschrift te identificeren, het kan leren om de nauwkeurigheid te vergroten en is een van de meest ontwikkelde en complete op de markt.
Het verslaat gemakkelijk commerciële concurrenten zoals ABBY, als u op zoek bent naar een serieuze oplossing voor OCR, is Tesseract de meest nauwkeurige, maar verwacht geen enorme oplossingen: het gebruikt een kern per proces, wat een 8-coreprocessor betekent (hyperthreading geaccepteerd) kunnen 8 of 16 afbeeldingen tegelijk verwerken.
Toen ik Tesseract gebruikte, hebben we duizenden potentiële klanten beheerd die handgeschreven inhoud, afbeeldingen met tekst, enz. uploadden. We gebruikten 48 core-servers, met DatabaseByDesign en vervolgens met AWS, we hadden nooit een probleem met bronnen.
We hadden een uploader die onderscheid maakte tussen tekstbestanden zoals Microsoft Office- of Open Office-bestanden en afbeeldingen of gescande documenten. De uploader bepaalde wat de OCR- of PHP-scripts een bestelling zouden verwerken, op het gebied van tekstherkenning.
Tesseact is een geweldige oplossing, maar voordat je erover nadenkt, moet je weten dat de vorige versies van Tesseract grote verbeteringen brachten, sommige betekenen hard werken. Hoewel de training uren of dagen kan duren, kunnen de recente versies van Tesserct dagen, weken of zelfs maanden duren als u op zoek bent naar een meertalige OCR-oplossing.
Tesseract 4 installeren op Debian / Ubuntu:
apt-get install tesseract-ocrAls je een andere Linux-distributie gebruikt, moet je de laatste versie van de github-repository kopiëren en de .traindata-bestand in 'tessdata' (/usr/share/tesseract-ocr/tessdata of /usr/share/tessdata).
Standaard installeert Tesseract het Engelse taalpakket, om extra talen te installeren, wordt uitgevoerd
apt-get install tesseract-ocr-LANGom bijvoorbeeld Hebreeuws toe te voegen:
apt-get install tesseract-ocr-hebU kunt alle talen opnemen door uit te voeren:
apt-get install tesseract-ocr-all
Om Tesseract correct te laten werken, moeten we de opdracht "converteren" gebruiken (converteren tussen afbeeldingsindelingen en het formaat van een afbeelding wijzigen, vervagen, bijsnijden, ontvlekken, ditheren, tekenen op, spiegelen, samenvoegen, opnieuw samplen en veel meer) geleverd door Imagemagick:
Laten we imagemagick installeren met apt-get:
apt-get install imagemagickLaten we nu Tesseract testen, een afbeelding met tekst zoeken en uitvoeren:
tesseract [image_name] [output bestandsnaam]Indien correct geïnstalleerd, zal Tesseract de tekst uit de afbeelding halen.
Toen ik met Tesseract werkte, was alles wat we nodig hadden om documenten te tellen. Net als bij elk ander programma kun en moet je het trainen, in Word kunnen we enkele symbolen definiëren die kunnen worden geteld of niet, of je getallen moet tellen of niet, enz. hetzelfde met Tesseract.
We kunnen zijn gevoeligheid ook trainen voor specifieke afbeeldingen.
Tesseract-optimalisatie:
Maatoptimalisatie: Volgens officiële bronnen is de optimale pixelgrootte voor een afbeelding die met succes door Tesseract kan worden verwerkt 300 DPI. We moeten elke afbeelding verwerken met de parameter -r om deze DPI af te dwingen. Het verhogen van de DPI zal ook de verwerkingstijd verlengen.
Paginarotatie: Als de pagina bij het scannen niet goed was gedraaid en 180° of 45° blijft, neemt de nauwkeurigheid van Tesseract af. U kunt dit Python-script gebruiken om rotatieproblemen automatisch te detecteren en op te lossen.
Grens verwijderen: Volgens de officiële man van Tesseract kunnen grenzen ten onrechte als tekens worden gekozen, vooral donkere randen en waar sprake is van gradatievariatie. Het verwijderen van randen kan een goede stap zijn om de maximale nauwkeurigheid te bereiken met Tesseract.
Ruis verwijderen: Volgens Tesseracts is ruis "willekeurige variatie van helderheid of kleur in een afbeelding". We kunnen het verwijderen in de binarisatie stap, wat betekent dat de kleuren polariseren.
Opleiding Tesseract:
Hoewel de meeste tutorials alleen de installatie van Tesseract behandelen, zal ik samenvatten hoe je je OCR-systeem kunt trainen, hier kunnen we een tutorial vinden voor alle versies. In dit artikel vat ik samen hoe je Tesseract 4 kunt trainen, inclusief een nieuwe "neurale netwerkgebaseerde herkenningsengine die een aanzienlijk hogere nauwkeurigheid (op documentafbeeldingen) levert dan de vorige versies, in ruil voor een aanzienlijke toename van de vereiste rekenkracht. In complexe talen kan het echter sneller zijn dan basis Tesseract.”
Voordat we verder gaan, moeten we extra bibliotheken installeren:
sudo apt-get install libicu-devsudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev
En we zullen de trainingstools installeren door in de Tesseract-directory te draaien:
makentraining maken
sudo make training-install
Volgens de officiële wiki van Tesseract hebben we momenteel 3 opties om ons OCR-systeem te trainen:
- "Afstellen. Begin met een bestaande getrainde taal en train op uw specifieke aanvullende gegevens. Dit kan werken voor problemen die dicht bij de bestaande trainingsgegevens liggen, maar op een subtiele manier verschillen, zoals een bijzonder ongebruikelijk lettertype. Kan werken met zelfs een kleine hoeveelheid trainingsgegevens.
- Snijd de bovenste laag (of een willekeurig aantal lagen) af van het netwerk en train een nieuwe toplaag opnieuw met de nieuwe gegevens. Als fijnafstemming niet werkt, is dit waarschijnlijk de op één na beste optie. Het afsnijden van de bovenste laag kan nog steeds werken voor het trainen van een geheel nieuwe taal of script, als je begint met het meest gelijkende script.
- Opnieuw trainen vanaf het begin. Dit is een ontmoedigende taak, tenzij je een zeer representatieve en voldoende grote trainingsset voor je probleem hebt. Zo niet, dan heb je waarschijnlijk een overbelast netwerk dat het heel goed doet met de trainingsgegevens, maar niet met de feitelijke gegevens.
Hoewel de bovenstaande opties misschien anders klinken, zijn de trainingsstappen eigenlijk bijna identiek, afgezien van de opdrachtregel, dus het is relatief eenvoudig om het op alle manieren te proberen, gezien de tijd of hardware om ze parallel uit te voeren.”
In deze tutorial zullen we alleen de testtrain uitvoeren.sh-script dat de nodige programma's zal oproepen om een specifieke taal te trainen.
Laten we allereerst alle bestanden in onze /usr/share/tesseract-ocr klonen:
git kloon https://github.com/tesseract-ocr/tesseract
Ga naar /usr/share/tesseract-ocr/tesseract/training (de standaard installatiemap van Tesseract) en voer het volgende uit:
$ ./testtrain.sh --lang heb --langdata_dir /usr/share/tesseract-ocr/langdata --tessdata_dir /usr/share/tesseract-ocr/tessdata
Wijzig "heb" voor de taal die u wilt trainen en bewerk ook het pad naar uw gegevens.
Binnen de map /usr/share/tesseract-ocr/tesseract/training u vindt het bestand taalspecifiek.sh handig om regels toe te voegen voor specifieke talen.
Probleemoplossen
Tesseract is voor mij de beste OCR-oplossing, maar onlangs heeft het enorme veranderingen aangebracht ten opzichte van de vorige versies en veel gebruikers klagen over wijzigingen of dingen die niet meer werken, ik zou me geen zorgen maken omdat de veranderingen geweldige resultaten lijken te geven. De community van Tesseract is erg actief, mocht je problemen ondervinden bij het uitvoeren van tesseract, word dan hier onderdeel van de community van Tesseract.