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
ทำด้วย ในกรุงเบอร์ลิน