การรู้จำอักขระด้วยแสง (OCR) คือกระบวนการจดจำอักขระจากรูปภาพโดยใช้คอมพิวเตอร์วิทัศน์และเทคนิคการเรียนรู้ของเครื่อง แอปอ้างอิงนี้สาธิตวิธีใช้ TensorFlow Lite เพื่อทำ OCR โดยจะใช้การผสมผสานระหว่าง โมเดลการตรวจจับข้อความ และ โมเดลการจดจำข้อความ เป็นไปป์ไลน์ OCR เพื่อจดจำอักขระข้อความ
เริ่ม
หากคุณยังใหม่กับ TensorFlow Lite และกำลังใช้งาน Android เราขอแนะนำให้สำรวจแอปพลิเคชันตัวอย่างต่อไปนี้ที่สามารถช่วยคุณเริ่มต้นได้
หากคุณใช้แพลตฟอร์มอื่นที่ไม่ใช่ Android หรือคุณคุ้นเคยกับ TensorFlow Lite API อยู่แล้ว คุณสามารถดาวน์โหลดโมเดลต่างๆ ได้จาก TF Hub
มันทำงานอย่างไร
งาน OCR มักจะแบ่งออกเป็น 2 ขั้นตอน ขั้นแรก เราใช้โมเดลการตรวจจับข้อความเพื่อตรวจจับกรอบล้อมรอบข้อความที่เป็นไปได้ ประการที่สอง เราป้อนกล่องขอบเขตที่ประมวลผลแล้วลงในโมเดลการรู้จำข้อความเพื่อกำหนดอักขระเฉพาะภายในกล่องขอบเขต (เรายังต้องทำการระงับแบบไม่สูงสุด การแปลงเปอร์สเปคทีฟ และอื่นๆ ก่อนที่จะจดจำข้อความ) ในกรณีของเรา ทั้งสองรุ่นมาจาก TensorFlow Hub และเป็นโมเดลเชิงปริมาณ FP16
เกณฑ์มาตรฐานประสิทธิภาพ
หมายเลขเกณฑ์มาตรฐานประสิทธิภาพสร้างขึ้นด้วยเครื่องมือที่อธิบายไว้ ที่นี่
ชื่อรุ่น | ขนาดโมเดล | อุปกรณ์ | ซีพียู | จีพียู |
---|---|---|---|---|
การตรวจจับข้อความ | 45.9 ลบ | พิกเซล 4 (Android 10) | 181.93ms* | 89.77ms* |
การรับรู้ข้อความ | 16.8 ลบ | พิกเซล 4 (Android 10) | 338.33ms* | ไม่มี** |
* ใช้ 4 เธรด
** รุ่นนี้ไม่สามารถใช้ตัวแทน GPU ได้เนื่องจากเราต้องการตัวเลือก TensorFlow เพื่อเรียกใช้
อินพุต
โมเดลการตรวจจับข้อความยอมรับเทนเซอร์ 4-D float32
ของ (1, 320, 320, 3) เป็นอินพุต
โมเดลการรู้จำข้อความยอมรับเทนเซอร์ 4-D float32
ของ (1, 31, 200, 1) เป็นอินพุต
เอาท์พุต
โมเดลการตรวจจับข้อความส่งคืนเทนเซอร์ 4-D float32
ของรูปร่าง (1, 80, 80, 5) เป็นกล่องขอบเขต และ 4-D float32
เทนเซอร์ของรูปร่าง (1,80, 80, 5) เป็นคะแนนการตรวจจับ
โมเดลการรู้จำข้อความส่งคืนเทนเซอร์ 2 มิติ float32
ของรูปร่าง (1, 48) เป็นดัชนีการแมปไปยังรายการตัวอักษร '0123456789abcdefghijklmnopqrstuvwxyz'
ข้อจำกัด
โมเดลการรู้จำข้อความ ปัจจุบันได้รับการฝึกฝนโดยใช้ข้อมูลสังเคราะห์ที่มีตัวอักษรและตัวเลขภาษาอังกฤษ ดังนั้นจึงรองรับเฉพาะภาษาอังกฤษเท่านั้น
โมเดลไม่ทั่วไปเพียงพอสำหรับ OCR ในป่า (เช่น ภาพสุ่มที่ถ่ายโดยกล้องสมาร์ทโฟนในสภาพแสงน้อย)
ดังนั้นเราจึงเลือกโลโก้ผลิตภัณฑ์ Google 3 อันเพื่อสาธิตวิธีทำ OCR ด้วย TensorFlow Lite เท่านั้น หากคุณกำลังมองหาผลิตภัณฑ์ OCR ระดับการผลิตที่พร้อมใช้งาน คุณควรพิจารณา Google ML Kit ML Kit ซึ่งใช้ TFLite ข้างใต้ น่าจะเพียงพอสำหรับกรณีการใช้งาน OCR ส่วนใหญ่ แต่มีบางกรณีที่คุณอาจต้องการสร้างโซลูชัน OCR ของคุณเองด้วย TFLite ตัวอย่างบางส่วนได้แก่:
- คุณมีโมเดล TFLite การตรวจจับ/จดจำข้อความของคุณเองที่คุณต้องการใช้
- คุณมีข้อกำหนดทางธุรกิจพิเศษ (เช่น การจดจำข้อความที่กลับหัว) และจำเป็นต้องปรับแต่งไปป์ไลน์ OCR
- คุณต้องการสนับสนุนภาษาที่ไม่ครอบคลุมใน ML Kit
- อุปกรณ์ผู้ใช้เป้าหมายของคุณไม่จำเป็นต้องติดตั้งบริการ Google Play
อ้างอิง
- ตัวอย่างการตรวจจับ/การจดจำข้อความ OpenCV: https://github.com/opencv/opencv/blob/master/samples/dnn/text_detection.cpp
- โครงการชุมชน OCR TFLite โดยผู้ร่วมให้ข้อมูลในชุมชน: https://github.com/tulasiram58827/ocr_tflite
- การตรวจจับข้อความ OpenCV: https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/
- การตรวจจับข้อความแบบ Deep Learning โดยใช้ OpenCV: https://learnopencv.com/deep-learning-based-text-detection-using-opencv-c-python/