wrapper เพื่อทำงานร่วมกับ Tesseract OCR ภายใน PHP
ผ่านผู้แต่ง:
$ composer require thiagoalessio/tesseract_ocr
มีหลายวิธีในการติดตั้ง Tesseract OCR บนระบบของคุณ แต่หากคุณต้องการบางสิ่งในการเริ่มต้นและใช้งานอย่างรวดเร็ว ฉันขอแนะนำให้ติดตั้งแพ็คเกจ Capture2Text ด้วย Chocolatey
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
โดยสามารถเลือกรับจำนวนเต็มเป็นการ timeout
ในกรณีที่คุณประสบปัญหากระบวนการ tesseract หยุดทำงาน
$ 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 ();
กำหนดตำแหน่งที่กำหนดเองของไฟล์ปฏิบัติการ tesseract
หากไม่มีอยู่ใน $PATH
ไม่ว่าจะด้วยเหตุผลใดก็ตาม
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# languages-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 ();
กำหนดภาษาอย่างน้อยหนึ่งภาษาที่จะใช้ในระหว่างการจดจำ สามารถดูรายการภาษาทั้งหมดได้ที่: https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#languages
เคล็ดลับจาก @daijiale: ใช้ชุดค่าผสม ->lang('chi_sim', 'chi_tra')
เพื่อให้จดจำภาษาจีนได้อย่างเหมาะสม
echo ( new TesseractOCR ( ' img.png ' ))
-> lang ( ' lang1 ' , ' lang2 ' , ' lang3 ' )
-> run ();
ระบุวิธีการแบ่งส่วนหน้า ซึ่งจะสั่ง tesseract
วิธีตีความรูปภาพที่กำหนด
ข้อมูลเพิ่มเติม: https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#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
จะถูกละเว้น Tempfiles จะถูกเขียน (และลบ) แม้ว่า 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
ทำด้วย ในกรุงเบอร์ลิน