Ein Wrapper für die Arbeit mit Tesseract OCR in PHP.
Über den Komponisten:
$ composer require thiagoalessio/tesseract_ocr
Es gibt viele Möglichkeiten, Tesseract OCR auf Ihrem System zu installieren. Wenn Sie jedoch nur schnell etwas zum Laufen bringen möchten, empfehle ich die Installation des Capture2Text-Pakets mit Chocolatey.
choco install capture2text --version 3.9
tesseract
Binärdatei eingestellt.
Mit MacPorts können Sie Unterstützung für einzelne Sprachen installieren, etwa so:
$ sudo port install tesseract-<langcode>
Aber das ist mit Homebrew nicht möglich. Standardmäßig wird nur Englisch unterstützt. Wenn Sie es also für andere Sprachen verwenden möchten, ist die schnellste Lösung, sie alle zu installieren:
$ brew install tesseract tesseract-lang
use thiagoalessio TesseractOCR TesseractOCR ;
echo ( new TesseractOCR ( ' text.png ' ))
-> run ();
The quick brown fox
jumps over
the lazy dog.
use thiagoalessio TesseractOCR TesseractOCR ;
echo ( new TesseractOCR ( ' german.png ' ))
-> lang ( ' deu ' )
-> run ();
Bülowstraße
use thiagoalessio TesseractOCR TesseractOCR ;
echo ( new TesseractOCR ( ' mixed-languages.png ' ))
-> lang ( ' eng ' , ' jpn ' , ' spa ' )
-> run ();
I eat すし y Pollo
use thiagoalessio TesseractOCR TesseractOCR ;
echo ( new TesseractOCR ( ' 8055.png ' ))
-> allowlist ( range ( ' A ' , ' Z ' ))
-> run ();
BOSS
Ja, ich weiß, dass einige von Ihnen diese Bibliothek vielleicht für den edlen Zweck nutzen möchten, CAPTCHAs zu knacken, also werfen Sie bitte einen Blick auf diesen Kommentar:
#91 (Kommentar)
Führt einen tesseract
Befehl aus und empfängt optional eine Ganzzahl als timeout
, falls es zu blockierten Tesseract-Prozessen kommt.
$ ocr = new TesseractOCR ();
$ ocr -> run ();
$ ocr = new TesseractOCR ();
$ timeout = 500 ;
$ ocr -> run ( $ timeout );
Definieren Sie den Pfad eines Bildes, das von tesseract
erkannt werden soll.
$ ocr = new TesseractOCR ();
$ ocr -> image ( ' /path/to/image.png ' );
$ ocr -> run ();
Legen Sie das von tesseract
zu erkennende Bild anhand einer Zeichenfolge mit seiner Größe fest. Dies kann nützlich sein, wenn Sie mit Dateien arbeiten, die bereits in den Speicher geladen sind. Sie können die Bilddaten und die Größe eines Bildobjekts ganz einfach abrufen:
//Using Imagick
$ data = $ img -> getImageBlob ();
$ size = $ img -> getImageLength ();
//Using GD
ob_start ();
// Note that you can use any format supported by tesseract
imagepng ( $ img , null , 0 );
$ size = ob_get_length ();
$ data = ob_get_clean ();
$ ocr = new TesseractOCR ();
$ ocr -> imageData ( $ data , $ size );
$ ocr -> run ();
Definieren Sie einen benutzerdefinierten Speicherort für die ausführbare tesseract
-Datei, falls diese aus irgendeinem Grund nicht im $PATH
vorhanden ist.
echo ( new TesseractOCR ( ' img.png ' ))
-> executable ( ' /path/to/tesseract ' )
-> run ();
Gibt die aktuelle Version von tesseract
zurück.
echo ( new TesseractOCR ())-> version ();
Gibt eine Liste der verfügbaren Sprachen/Skripte zurück.
foreach (( new TesseractOCR ())-> availableLanguages () as $ lang ) echo $ lang ;
Weitere Informationen: https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#linguals-and-scripts
Geben Sie einen benutzerdefinierten Speicherort für das Tessdata-Verzeichnis an.
echo ( new TesseractOCR ( ' img.png ' ))
-> tessdataDir ( ' /path ' )
-> run ();
Geben Sie den Speicherort der Benutzerwortdatei an.
Dies ist eine reine Textdatei, die eine Liste von Wörtern enthält, die von tesseract
als normale Wörterbuchwörter betrachtet werden sollen.
Nützlich beim Umgang mit Inhalten, die Fachterminologie, Fachjargon usw. enthalten.
$ cat /path/to/user-words.txt
foo
bar
echo ( new TesseractOCR ( ' img.png ' ))
-> userWords ( ' /path/to/user-words.txt ' )
-> run ();
Geben Sie den Speicherort der Benutzermusterdatei an.
Wenn die Inhalte, mit denen Sie es zu tun haben, bekannte Muster aufweisen, kann diese Option die Erkennungsgenauigkeit von Tesseract erheblich verbessern.
$ cat /path/to/user-patterns.txt'
1-ddd-GOOG-441
www.n\*.com
echo ( new TesseractOCR ( ' img.png ' ))
-> userPatterns ( ' /path/to/user-patterns.txt ' )
-> run ();
Definieren Sie eine oder mehrere Sprachen, die bei der Erkennung verwendet werden sollen. Eine vollständige Liste der verfügbaren Sprachen finden Sie unter: https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#linguals
Tipp von @daijiale: Verwenden Sie die Kombination ->lang('chi_sim', 'chi_tra')
für die korrekte Erkennung von Chinesisch.
echo ( new TesseractOCR ( ' img.png ' ))
-> lang ( ' lang1 ' , ' lang2 ' , ' lang3 ' )
-> run ();
Geben Sie die Seitensegmentierungsmethode an, die tesseract
anweist, wie das gegebene Bild zu interpretieren ist.
Weitere Informationen: https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#page-segmentation-method
echo ( new TesseractOCR ( ' img.png ' ))
-> psm ( 6 )
-> run ();
Geben Sie den OCR-Engine-Modus an. (siehe tesseract --help-oem
)
echo ( new TesseractOCR ( ' img.png ' ))
-> oem ( 2 )
-> run ();
Geben Sie die Bild-DPI an. Dies ist nützlich, wenn Ihr Bild diese Informationen nicht in seinen Metadaten enthält.
echo ( new TesseractOCR ( ' img.png ' ))
-> dpi ( 300 )
-> run ();
Dies ist eine Abkürzung für ->config('tessedit_char_whitelist', 'abcdef....')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> allowlist ( range ( ' a ' , ' z ' ), range ( 0 , 9 ), ' -_@ ' )
-> run ();
Geben Sie eine zu verwendende Konfigurationsdatei an. Es kann entweder der Pfad zu Ihrer eigenen Konfigurationsdatei oder der Name einer der vordefinierten Konfigurationsdateien sein: https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs
echo ( new TesseractOCR ( ' img.png ' ))
-> configFile ( ' hocr ' )
-> run ();
Geben Sie eine zu verwendende Ausgabedatei an. Beachten Sie: Wenn Sie eine Ausgabedatei festlegen, wird die Option withoutTempFiles
ignoriert. Tempfiles werden auch dann geschrieben (und gelöscht), wenn withoutTempFiles = true
ist.
In Kombination mit configFile
können Sie die hocr
, tsv
oder pdf
Dateien abrufen.
echo ( new TesseractOCR ( ' img.png ' ))
-> configFile ( ' pdf ' )
-> setOutputFile ( ' /PATH_TO_MY_OUTPUTFILE/searchable.pdf ' )
-> run ();
Verknüpfung für ->configFile('digits')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> digits ()
-> run ();
Verknüpfung für ->configFile('hocr')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> hocr ()
-> run ();
Verknüpfung für ->configFile('pdf')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> pdf ()
-> run ();
Verknüpfung für ->configFile('quiet')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> quiet ()
-> run ();
Verknüpfung für ->configFile('tsv')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> tsv ()
-> run ();
Verknüpfung für ->configFile('txt')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> txt ()
-> run ();
Definieren Sie ein benutzerdefiniertes Verzeichnis zum Speichern temporärer Dateien, die von Tesseract generiert werden. Stellen Sie sicher, dass das Verzeichnis tatsächlich existiert und der Benutzer, php
ausführt, dort schreiben darf.
echo ( new TesseractOCR ( ' img.png ' ))
-> tempDir ( ' ./my/custom/temp/dir ' )
-> run ();
Geben Sie an, dass tesseract
den erkannten Text ausgeben soll, ohne in temporäre Dateien zu schreiben. Die Daten werden stattdessen aus der Standardausgabe von tesseract
gesammelt.
echo ( new TesseractOCR ( ' img.png ' ))
-> withoutTempFiles ()
-> run ();
Jede von Tesseract angebotene Konfigurationsoption kann folgendermaßen genutzt werden:
echo ( new TesseractOCR ( ' img.png ' ))
-> config ( ' config_var ' , ' value ' )
-> config ( ' other_config_var ' , ' other value ' )
-> run ();
Oder so:
echo ( new TesseractOCR ( ' img.png ' ))
-> configVar ( ' value ' )
-> otherConfigVar ( ' other value ' )
-> run ();
Weitere Informationen: https://github.com/tesseract-ocr/tesseract/wiki/ControlParams
Manchmal kann es nützlich sein, die Anzahl der Threads zu begrenzen, die Tesseract verwenden darf (z. B. in diesem Fall). Legen Sie die maximale Anzahl an Threads als Parameter für die run
fest:
echo ( new TesseractOCR ( ' img.png ' ))
-> threadLimit ( 1 )
-> run ();
Sie können zu diesem Projekt beitragen, indem Sie:
Werfen Sie unbedingt einen Blick auf unseren Verhaltenskodex und die Anweisungen zum Mitwirken.
tesseract-ocr-for-php wird unter der MIT-Lizenz veröffentlicht.
Hergestellt mit in Berlin