Ist es möglich, den Zeichensatz, nach dem Tesseract sucht , einzuschränken (z. B. nur nach Buchstaben az suchen)? Das würde meine Ergebnisse erheblich verbessern.
73
Ist es möglich, den Zeichensatz, nach dem Tesseract sucht , einzuschränken (z. B. nur nach Buchstaben az suchen)? Das würde meine Ergebnisse erheblich verbessern.
Erstellen Sie eine Konfigurationsdatei (z. B. "Buchstaben") im Verzeichnis tessdata / configs - normalerweise /usr/share/tesseract/tessdata/configs
oder
/usr/share/tesseract-ocr/tessdata/configs
Und fügen Sie diese Zeile zur Konfigurationsdatei hinzu:
tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz
... oder vielleicht funktioniert [az] .. keine Ahnung :-)
Dann nenne tesseract ähnlich wie folgt :
tesseract input.tif output nobatch letters
Dadurch wird tesseract eingeschränkt, um nur die gewünschten Zeichen zu erkennen
Um die Whitelist in einer Konfigurationsdatei oder über den
-c tessedit_char_whitelist=...
Befehlszeilenschalter zu verwenden, müssen Sie in der neuesten Version 4.0 den OCR Engine-Modus auf "Nur Original Tesseract" einstellen. Dies liegt daran, dass der neue LSTM-Modus "Neuronale Netze" die Whitelist-Einstellung nicht berücksichtigt. Beispiel für die richtige Befehlszeile für die Version 4.0:UPDATE: In neueren Versionen (4.0) ist eine beschädigte
eng.traineddata
Datei standardmäßig von Windows und einigen Linux-Installationsprogrammen installiert. Temporäre Lösung besteht darin, dietessdata\eng.traineddata
Datei durch eine Datei aus einer älteren Version zu ersetzen . Diese Datei sollte ungefähr 30 MB groß sein. Andernfalls erhalten Sie den Fehler: "Tesseract konnte keine Sprachen laden!" oder ähnliches.Update von tesseract 4.1.1
In Tesseract 4.1.1 ist der obige Fehler jedoch behoben, dh in Tesseract 4.1.1 funktioniert das Folgende wie ein Zauber
tesseract my_image.jpg stdout -l mylang configfile myconfig
Wobei "myconfig" eine Klartextdatei in TESSDATA / configs ist
quelle
pyt.image_to_data(im_gray_res, config='-c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ --psm 11 --oem 0')
wiepytesseract.pytesseract.TesseractError: (1, "Failed loading language 'eng' Tesseract couldn't load any languages! Could not initialize tesseract.")
. Irgendwelche Ideen, wie die Erkennung mit nur den erforderlichen Zeichen erreicht werden kann?pytesseract.image_to_data(Image.open('test.png'))
ohne zusätzliche Argumente zu verwenden? Weil der Fehler nicht mit der Zeichen-Whitelist selbst zusammenhängt.eng.traineddata
Datei beschädigt . Ich habe die neueste Version 4.0 ausprobiert und den gleichen Fehler erhalten. Temporäre Lösung besteht darin, dietessdata\eng.traineddata
Datei durch eine Datei aus einer älteren Version zu ersetzen . Diese Datei sollte ungefähr 30 MB groß sein (nicht 4 MB wie die in Version 4.0 installierte).tessdata/eng.trainedddata
mit dem einem heruntergeladen und alles funktionierte einwandfrei auf Version 4.0.Zusätzlich zur Konfigurationsdatei befindet sich das
-c
Flag:quelle
Fügen Sie dies einfach für alle hinzu, die Tesseract unter Android verwenden. Fügen Sie in Ihrer readOCR-Funktion, in der Sie die Sprache usw. festlegen, die folgende Zeile hinzu.
Sie können auch blackList ausführen, damit Zeichen ausgeschlossen werden.
quelle
tesseract.setTessVariable()
Ich benutze Ubuntu 18.04.4 LTS. Der Standard-Tesseract ist Version 4. Ich kann keine Whitelist damit verwenden. Dann aktualisiere ich es auf Version 5. Dann benutze ich den folgenden Befehl und es hat funktioniert.
sample.jpg
quelle
In Tesseract Version 4.00 ist dies nicht möglich. Sie können Ihr Modell nur optimieren oder Regex verwenden, um zusätzliche Zeichen aus der Vorhersage zu entfernen.
quelle
Meine Antwort stammt vollständig aus der Antwort akzeptiert und wird hier hinzugefügt alle .NET - Windows - Entwickler profitieren die Verwendung
Tesseract
NuGet Paket - jedoch zur Kenntnis nehmen meine Kugel 2, bezieht jeder mit jeder Art vonTesseract
auf Windowsconfig
Ordner in Ihremtessdata
Ordner, in dem sich die anderen Trainingsdaten befinden.letters
Datei in denconfig
Ordner ein. Verwenden Sie einen Editor wie TextPad, mit dem Sie ihn im UNIX-Format und in der ANSI-Codierung speichern können (ich hatte ursprünglich UTF-8 / IBM PC ausprobiert und tesseract hat einen Fehler in meine Testausgabe gekotzt).letters
Datei im Eigenschaftenfenster eine Build-Aktion festgelegtContent
und weiter markiert ist, um sie in das Ausgabeverzeichnis zu kopieren:var ocrEng = new TesseractEngine("./tessdata", "eng", EngineMode.Default, "letters");
quelle