PHP 内で Tesseract OCR を操作するためのラッパー。
作曲家経由:
$ composer require thiagoalessio/tesseract_ocr
Tesseract OCR をシステムにインストールする方法はたくさんありますが、すぐに起動して実行したいだけの場合は、Chocolatey で Capture2Text パッケージをインストールすることをお勧めします。
choco install capture2text --version 3.9
tesseract
バイナリの配布を停止しました。
MacPorts を使用すると、次のように個別の言語のサポートをインストールできます。
$ sudo port install tesseract-<langcode>
しかし、Homebrew ではそれは不可能です。デフォルトでは英語のみのサポートが提供されるため、他の言語で使用する場合は、すべてをインストールするのが最も簡単な解決策です。
$ 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
はい、CAPTCHA を破るという崇高な目的でこのライブラリを使用したいと考えている人もいると思います。そのため、次のコメントを見てください。
#91 (コメント)
tesseract プロセスが停止した場合に備えて、 tesseract
コマンドを実行します。オプションでtimeout
として整数を受け取ります。
$ ocr = new TesseractOCR ();
$ ocr -> run ();
$ ocr = new TesseractOCR ();
$ timeout = 500 ;
$ ocr -> run ( $ timeout );
tesseract
で認識される画像のパスを定義します。
$ ocr = new TesseractOCR ();
$ ocr -> image ( ' /path/to/image.png ' );
$ ocr -> run ();
tesseract
で認識される画像とそのサイズを文字列から設定します。これは、メモリにすでにロードされているファイルを扱う場合に便利です。画像データと画像オブジェクトのサイズを簡単に取得できます。
//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 ();
何らかの理由で$PATH
に存在しない場合は、 tesseract
実行可能ファイルのカスタムの場所を定義します。
echo ( new TesseractOCR ( ' img.png ' ))
-> executable ( ' /path/to/tesseract ' )
-> run ();
tesseract
の現在のバージョンを返します。
echo ( new TesseractOCR ())-> version ();
利用可能な言語/スクリプトのリストを返します。
foreach (( new TesseractOCR ())-> availableLanguages () as $ lang ) echo $ lang ;
詳細: https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#lungs-and-scripts
tessdata ディレクトリのカスタムの場所を指定します。
echo ( new TesseractOCR ( ' img.png ' ))
-> tessdataDir ( ' /path ' )
-> run ();
ユーザーワードファイルの場所を指定します。
これは、 tesseract
によって通常の辞書の単語としてみなされる単語のリストを含むプレーン テキスト ファイルです。
専門用語や専門用語などが含まれるコンテンツを扱う場合に便利です。
$ cat /path/to/user-words.txt
foo
bar
echo ( new TesseractOCR ( ' img.png ' ))
-> userWords ( ' /path/to/user-words.txt ' )
-> run ();
ユーザーパターンファイルの場所を指定します。
扱っているコンテンツに既知のパターンがある場合、このオプションは tesseract の認識精度に大きく役立ちます。
$ 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 ();
認識中に使用する 1 つ以上の言語を定義します。利用可能な言語の完全なリストは、https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#messages でご覧いただけます。
@daijiale からのヒント:中国語を正しく認識するには、 ->lang('chi_sim', 'chi_tra')
の組み合わせを使用します。
echo ( new TesseractOCR ( ' img.png ' ))
-> lang ( ' lang1 ' , ' lang2 ' , ' lang3 ' )
-> run ();
ページ分割方法を指定します。これは、指定された画像を解釈する方法をtesseract
指示します。
詳細: https://github.com/tesseract-ocr/tesseract/wiki/ ImprovementQuality#page-segmentation-method
echo ( new TesseractOCR ( ' img.png ' ))
-> psm ( 6 )
-> run ();
OCR エンジン モードを指定します。 ( tesseract --help-oem
参照)
echo ( new TesseractOCR ( ' img.png ' ))
-> oem ( 2 )
-> run ();
画像のDPIを指定します。画像のメタデータにこの情報が含まれていない場合に便利です。
echo ( new TesseractOCR ( ' img.png ' ))
-> dpi ( 300 )
-> run ();
これは->config('tessedit_char_whitelist', 'abcdef....')
のショートカットです。
echo ( new TesseractOCR ( ' img.png ' ))
-> allowlist ( range ( ' a ' , ' z ' ), range ( 0 , 9 ), ' -_@ ' )
-> run ();
使用する設定ファイルを指定します。独自の構成ファイルへのパス、または事前定義された構成ファイルのいずれかの名前にすることができます: https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs
echo ( new TesseractOCR ( ' img.png ' ))
-> configFile ( ' hocr ' )
-> run ();
使用する出力ファイルを指定します。注意: 出力ファイルを設定した場合、オプションwithoutTempFiles
は無視されます。 withoutTempFiles = true
の場合でも、一時ファイルは書き込まれます (および削除されます)。
configFile
と組み合わせて、 hocr
、 tsv
またはpdf
ファイルを取得できます。
echo ( new TesseractOCR ( ' img.png ' ))
-> configFile ( ' pdf ' )
-> setOutputFile ( ' /PATH_TO_MY_OUTPUTFILE/searchable.pdf ' )
-> run ();
->configFile('digits')
のショートカット。
echo ( new TesseractOCR ( ' img.png ' ))
-> digits ()
-> run ();
->configFile('hocr')
のショートカット。
echo ( new TesseractOCR ( ' img.png ' ))
-> hocr ()
-> run ();
->configFile('pdf')
のショートカット。
echo ( new TesseractOCR ( ' img.png ' ))
-> pdf ()
-> run ();
->configFile('quiet')
のショートカット。
echo ( new TesseractOCR ( ' img.png ' ))
-> quiet ()
-> run ();
->configFile('tsv')
のショートカット。
echo ( new TesseractOCR ( ' img.png ' ))
-> tsv ()
-> run ();
->configFile('txt')
のショートカット。
echo ( new TesseractOCR ( ' img.png ' ))
-> txt ()
-> run ();
tesseract によって生成された一時ファイルを保存するカスタム ディレクトリを定義します。ディレクトリが実際に存在し、 php
実行しているユーザーがそこに書き込みを許可されていることを確認してください。
echo ( new TesseractOCR ( ' img.png ' ))
-> tempDir ( ' ./my/custom/temp/dir ' )
-> run ();
tesseract
一時ファイルに書き込まずに認識されたテキストを出力するように指定します。データは代わりにtesseract
の標準出力から収集されます。
echo ( new TesseractOCR ( ' img.png ' ))
-> withoutTempFiles ()
-> run ();
Tesseract が提供する構成オプションはすべて次のように使用できます。
echo ( new TesseractOCR ( ' img.png ' ))
-> config ( ' config_var ' , ' value ' )
-> config ( ' other_config_var ' , ' other value ' )
-> run ();
または次のようにします。
echo ( new TesseractOCR ( ' img.png ' ))
-> configVar ( ' value ' )
-> otherConfigVar ( ' other value ' )
-> run ();
詳細: https://github.com/tesseract-ocr/tesseract/wiki/ControlParams
場合によっては、tesseract が使用できるスレッドの数を制限すると便利な場合があります (たとえば、この場合)。 run
関数のパラメータとしてスレッドの最大数を設定します。
echo ( new TesseractOCR ( ' img.png ' ))
-> threadLimit ( 1 )
-> run ();
次の方法でこのプロジェクトに貢献できます。
当社の行動規範と貢献に関する指示を必ずご覧ください。
tesseract-ocr-for-php は MIT ライセンスに基づいてリリースされています。
で作られましたベルリンで