Pembungkus untuk bekerja dengan Tesseract OCR di dalam PHP.
Melalui Komposer:
$ composer require thiagoalessio/tesseract_ocr
Ada banyak cara untuk menginstal Tesseract OCR di sistem Anda, tetapi jika Anda hanya ingin sesuatu yang cepat aktif dan berjalan, saya sarankan menginstal paket Capture2Text dengan Chocolatey.
choco install capture2text --version 3.9
tesseract
.
Dengan MacPorts Anda dapat menginstal dukungan untuk masing-masing bahasa, seperti:
$ sudo port install tesseract-<langcode>
Namun hal itu tidak mungkin dilakukan dengan Homebrew. Ini hanya hadir dengan dukungan bahasa Inggris secara default, jadi jika Anda ingin menggunakannya untuk bahasa lain, solusi tercepat adalah menginstal semuanya:
$ 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
Ya, saya tahu beberapa dari Anda mungkin ingin menggunakan perpustakaan ini untuk tujuan mulia yaitu memecahkan CAPTCHA, jadi silakan lihat komentar ini:
#91 (komentar)
Menjalankan perintah tesseract
, secara opsional menerima bilangan bulat sebagai timeout
, jika Anda mengalami proses tesseract terhenti.
$ ocr = new TesseractOCR ();
$ ocr -> run ();
$ ocr = new TesseractOCR ();
$ timeout = 500 ;
$ ocr -> run ( $ timeout );
Tentukan jalur gambar yang akan dikenali oleh tesseract
.
$ ocr = new TesseractOCR ();
$ ocr -> image ( ' /path/to/image.png ' );
$ ocr -> run ();
Atur gambar agar dikenali oleh tesseract
dari sebuah string, beserta ukurannya. Ini bisa berguna saat menangani file yang sudah dimuat di memori. Anda dapat dengan mudah mengambil data gambar dan ukuran objek gambar :
//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 ();
Tentukan lokasi khusus dari tesseract
yang dapat dieksekusi, jika karena alasan apa pun lokasi tersebut tidak ada di $PATH
.
echo ( new TesseractOCR ( ' img.png ' ))
-> executable ( ' /path/to/tesseract ' )
-> run ();
Mengembalikan versi tesseract
saat ini.
echo ( new TesseractOCR ())-> version ();
Mengembalikan daftar bahasa/skrip yang tersedia.
foreach (( new TesseractOCR ())-> availableLanguages () as $ lang ) echo $ lang ;
Info lebih lanjut: https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#linguals-and-scripts
Tentukan lokasi khusus untuk direktori tessdata.
echo ( new TesseractOCR ( ' img.png ' ))
-> tessdataDir ( ' /path ' )
-> run ();
Tentukan lokasi file kata pengguna.
Ini adalah file teks biasa yang berisi daftar kata yang ingin Anda anggap sebagai kata kamus normal oleh tesseract
.
Berguna ketika berhadapan dengan konten yang mengandung terminologi teknis, jargon, dll.
$ cat /path/to/user-words.txt
foo
bar
echo ( new TesseractOCR ( ' img.png ' ))
-> userWords ( ' /path/to/user-words.txt ' )
-> run ();
Tentukan lokasi file pola pengguna.
Jika konten yang Anda hadapi memiliki pola yang diketahui, opsi ini dapat sangat membantu akurasi pengenalan 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 ();
Tentukan satu atau lebih bahasa yang akan digunakan selama pengenalan. Daftar lengkap bahasa yang tersedia dapat ditemukan di: https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#linguals
Kiat dari @daijiale: Gunakan kombinasi ->lang('chi_sim', 'chi_tra')
untuk pengenalan bahasa Mandarin yang tepat.
echo ( new TesseractOCR ( ' img.png ' ))
-> lang ( ' lang1 ' , ' lang2 ' , ' lang3 ' )
-> run ();
Tentukan Metode Segmentasi Halaman, yang menginstruksikan tesseract
cara menafsirkan gambar yang diberikan.
Info lebih lanjut: https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#page-segmentation-method
echo ( new TesseractOCR ( ' img.png ' ))
-> psm ( 6 )
-> run ();
Tentukan Mode Mesin OCR. (lihat tesseract --help-oem
)
echo ( new TesseractOCR ( ' img.png ' ))
-> oem ( 2 )
-> run ();
Tentukan DPI gambar. Hal ini berguna jika gambar Anda tidak berisi informasi ini dalam metadatanya.
echo ( new TesseractOCR ( ' img.png ' ))
-> dpi ( 300 )
-> run ();
Ini adalah jalan pintas untuk ->config('tessedit_char_whitelist', 'abcdef....')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> allowlist ( range ( ' a ' , ' z ' ), range ( 0 , 9 ), ' -_@ ' )
-> run ();
Tentukan file konfigurasi yang akan digunakan. Ini bisa berupa jalur ke file konfigurasi Anda sendiri atau nama salah satu file konfigurasi yang telah ditentukan sebelumnya: https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs
echo ( new TesseractOCR ( ' img.png ' ))
-> configFile ( ' hocr ' )
-> run ();
Tentukan File Output yang akan digunakan. Hati-hati: Jika Anda menyetel file keluaran maka opsi withoutTempFiles
diabaikan. Tempfiles ditulis (dan dihapus) meskipun withoutTempFiles = true
.
Dalam kombinasi dengan configFile
Anda bisa mendapatkan file hocr
, tsv
atau pdf
.
echo ( new TesseractOCR ( ' img.png ' ))
-> configFile ( ' pdf ' )
-> setOutputFile ( ' /PATH_TO_MY_OUTPUTFILE/searchable.pdf ' )
-> run ();
Pintasan untuk ->configFile('digits')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> digits ()
-> run ();
Pintasan untuk ->configFile('hocr')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> hocr ()
-> run ();
Pintasan untuk ->configFile('pdf')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> pdf ()
-> run ();
Pintasan untuk ->configFile('quiet')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> quiet ()
-> run ();
Pintasan untuk ->configFile('tsv')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> tsv ()
-> run ();
Pintasan untuk ->configFile('txt')
.
echo ( new TesseractOCR ( ' img.png ' ))
-> txt ()
-> run ();
Tentukan direktori khusus untuk menyimpan file sementara yang dihasilkan oleh tesseract. Pastikan direktori tersebut benar-benar ada dan pengguna yang menjalankan php
diperbolehkan untuk menulis di sana.
echo ( new TesseractOCR ( ' img.png ' ))
-> tempDir ( ' ./my/custom/temp/dir ' )
-> run ();
Tentukan bahwa tesseract
harus menampilkan teks yang dikenali tanpa menulis ke file sementara. Data dikumpulkan dari keluaran standar tesseract
.
echo ( new TesseractOCR ( ' img.png ' ))
-> withoutTempFiles ()
-> run ();
Opsi konfigurasi apa pun yang ditawarkan oleh Tesseract dapat digunakan seperti itu:
echo ( new TesseractOCR ( ' img.png ' ))
-> config ( ' config_var ' , ' value ' )
-> config ( ' other_config_var ' , ' other value ' )
-> run ();
Atau seperti itu:
echo ( new TesseractOCR ( ' img.png ' ))
-> configVar ( ' value ' )
-> otherConfigVar ( ' other value ' )
-> run ();
Info lebih lanjut: https://github.com/tesseract-ocr/tesseract/wiki/ControlParams
Terkadang, mungkin berguna untuk membatasi jumlah thread yang diizinkan untuk digunakan oleh Tesseract (misalnya dalam kasus ini). Tetapkan jumlah maksimum thread sebagai parameter untuk fungsi run
:
echo ( new TesseractOCR ( ' img.png ' ))
-> threadLimit ( 1 )
-> run ();
Anda dapat berkontribusi pada proyek ini dengan:
Pastikan Anda membaca Pedoman Perilaku dan instruksi Berkontribusi kami.
tesseract-ocr-for-php dirilis di bawah Lisensi MIT.
Dibuat dengan di Berlin