ความรู้เบื้องต้นเกี่ยวกับการรู้จำอักขระด้วยแสง [OCR] สำหรับผู้เริ่มต้น

เผยแพร่แล้ว: 2021-02-08

OCR หรือการรู้จำอักขระด้วยแสง (OCR) ใช้เพื่อดึงข้อมูลจากภาพใบเรียกเก็บเงินและใบเสร็จรับเงิน หรือสิ่งใดก็ตามที่มีเนื้อหาเป็นลายลักษณ์อักษร ในการพัฒนาโซลูชันนี้ สามารถใช้ OpenCV เพื่อประมวลผลรูปภาพซึ่งสามารถป้อนลงในเอ็นจิน Tesseract OCR เพิ่มเติมที่สามารถดึงข้อความจากรูปภาพเหล่านั้นได้

อย่างไรก็ตาม กระบวนการลบข้อความจะมีประสิทธิภาพก็ต่อเมื่อภาพมีความชัดเจนและมองเห็นข้อความได้เพียงพอ ในแอปพลิเคชันขายปลีก สำหรับการดึงข้อความจากใบแจ้งหนี้ ใบแจ้งหนี้อาจมีลายน้ำหรืออาจมีเงาบนใบเรียกเก็บเงินที่ขัดขวางข้อมูลที่จะถูกจับ

การรวบรวมข้อมูลจากหน้าข้อความที่ยาวขึ้นอาจเป็นงานที่ยากลำบากเช่นกัน เพื่อจัดการกับปัญหาเหล่านี้ จึงควรระมัดระวังในขั้นตอนการดึงข้อมูล มีที่จากโมดูลการประมวลผลภาพที่เกี่ยวข้องกับปัญหาดังกล่าว

ประกอบด้วยกระบวนการย่อยหลายอย่าง กล่าวคือ การแปลข้อความ การแบ่งส่วนอักขระ และการจดจำอักขระเหล่านั้น แม้ว่าระบบบางระบบจะจัดการโดยไม่มีการแบ่งส่วน วิธีการดังกล่าวผลิตขึ้นโดยใช้หลายขั้นตอน เช่น การใช้วิธีกำลังสองน้อยที่สุดเพื่อลดอัตราข้อผิดพลาดและสนับสนุนเครื่องเวกเตอร์เพื่อให้ตรงกับอักขระ

ยังคงใช้ Convolutional Neural Networks (CNN) เพื่อระบุการครอบครองตัวละครในรูปภาพบ่อยครั้ง สามารถดูข้อความเป็นลำดับอักขระที่สอดคล้องกันได้ การตรวจจับและระบุอักขระเหล่านี้ด้วยความแม่นยำที่มากขึ้นเป็นปัญหาที่สามารถแก้ไขได้โดยใช้โครงข่ายประสาทเทียมชนิดพิเศษ กล่าวคือ โครงข่ายประสาทเทียมแบบกำเริบ (RNN) และหน่วยความจำระยะสั้นระยะยาว (LSTM)

คำศัพท์จะถูกรวบรวมโดยการปรับข้อความให้เป็นหยด นอกจากนี้ยังมีการตรวจสอบเส้นและขอบเขตเหล่านี้สำหรับข้อความที่เทียบเท่ากัน บรรทัดข้อความจะแบ่งออกเป็นคำตามการเว้นวรรคเท่านั้น วิธีการระบุตัวตนแบ่งออกเป็นสองขั้นตอน ประการแรก แต่ละคำจะถูกระบุ คำที่สมบูรณ์หรือระบุอย่างถูกต้องทุกคำจะถูกส่งไปยังตัวแยกประเภทแบบปรับได้เพิ่มเติมเป็นข้อมูลการฝึกอบรม

ภาพที่ได้รับเป็นอินพุตจะถูกตรวจสอบและประมวลผลเป็นบางส่วน ข้อความจะถูกป้อนเข้าสู่โมเดล LSTM ทีละบรรทัด Tesseract ซึ่งเป็นเอ็นจิ้นการรู้จำอักขระด้วยแสงมีให้สำหรับระบบปฏิบัติการต่างๆ ใช้การผสมผสานระหว่างสถาปัตยกรรม CNN และ LSTM เพื่อระบุและรับข้อความจากข้อมูลภาพอย่างแม่นยำ อย่างไรก็ตาม รูปภาพที่มีจุดรบกวนหรือเงาจะขัดขวางความแม่นยำในการดึงข้อมูล

เพื่อลดสัญญาณรบกวนหรือปรับปรุงคุณภาพของภาพ การประมวลผลภาพล่วงหน้าสามารถทำได้โดยใช้ไลบรารี OpenCV ขั้นตอนก่อนการประมวลผลดังกล่าวอาจประกอบด้วยการค้นหา ROI หรือพื้นที่ที่สนใจ การครอบตัดรูปภาพ การกำจัดสัญญาณรบกวน (หรือบริเวณที่ไม่ต้องการ) ธรณีประตู การขยายและการกัดเซาะ การตรวจจับเส้นขอบหรือขอบ หลังจากขั้นตอนเหล่านั้นเสร็จสิ้น เอ็นจิ้น OCR สามารถอ่านรูปภาพและแยกข้อความที่เกี่ยวข้องออกจากรูปภาพได้อย่างสมบูรณ์

สารบัญ

เครื่องมือที่ใช้

1. OpenCV

OpenCV เป็นไลบรารี่เข้ากันได้กับภาษา C/C++ และ python มักใช้ในการประมวลผลข้อมูลด้วยตัวอย่างภาพ มีฟังก์ชันที่มีประโยชน์ที่กำหนดไว้ล่วงหน้ามากมายในไลบรารีที่ใช้การแปลงที่จำเป็นกับตัวอย่างรูปภาพ ฟังก์ชันที่กล่าวมาทั้งหมด เช่น การขยาย การกัดเซาะ การแบ่งส่วน การตรวจจับขอบ และอื่นๆ อีกมากมายสามารถทำได้ง่ายๆ โดยใช้ไลบรารีนี้

2. Tesseract OCR Engine

เผยแพร่โดย Google เป็นไลบรารีโอเพ่นซอร์สที่ใช้กันอย่างแพร่หลายสำหรับการจดจำข้อความ สามารถใช้เพื่อตรวจจับและระบุข้อความในภาษาต่างๆ การประมวลผลค่อนข้างเร็วและให้เอาต์พุตข้อความของรูปภาพเกือบจะในทันที แอปพลิเคชันการสแกนจำนวนมากใช้ประโยชน์จากไลบรารีนี้และอาศัยเทคนิคการแยกข้อมูล

ขั้นตอนที่เกี่ยวข้องในกระบวนการแยกข้อความ

(1) ประการแรก เทคนิคการประมวลผลภาพที่เป็นไปได้ เช่น การตรวจจับเส้นขอบ การลบจุดรบกวน และฟังก์ชันการกัดเซาะและการขยาย จะถูกนำไปใช้กับตัวอย่างภาพที่มีสัญญาณรบกวนที่เข้ามา

(2) หลังจากขั้นตอนนี้ การลบลายน้ำและเงาออกจากบิลเสร็จสิ้น

(3) นอกจากนี้ บิลยังแบ่งออกเป็นส่วนๆ

(4) ส่วนที่แบ่งส่วนจะถูกส่งผ่านเอ็นจิ้น Tesseract OCR เพื่อรับข้อความที่สมบูรณ์

(5) สุดท้ายเมื่อใช้ Regex เราได้รับข้อมูลสำคัญทั้งหมด เช่น จำนวนเงินทั้งหมด วันที่ซื้อ และค่าใช้จ่ายต่อรายการ

ให้ฉันพูดถึงภาพเฉพาะพร้อมข้อความ – ใบแจ้งหนี้และใบเรียกเก็บเงิน พวกเขามักจะมีลายน้ำซึ่งส่วนใหญ่เป็นบริษัทที่ออกใบเรียกเก็บเงิน ดังที่ได้กล่าวไว้ก่อนหน้านี้ ลายน้ำเหล่านี้เป็นอุปสรรคต่อการแยกข้อความอย่างมีประสิทธิภาพ บ่อยครั้งที่ลายน้ำเหล่านี้มีข้อความอยู่

สิ่งเหล่านี้ถือได้ว่าเป็นเสียงรบกวนเนื่องจากเครื่องยนต์ Tesseract จดจำข้อความทุกขนาดในบรรทัด เช่นเดียวกับลายน้ำ เงายังขัดขวางความแม่นยำของเครื่องยนต์ในการดึงข้อความอย่างมีประสิทธิภาพ เงาจะถูกลบออกโดยการเพิ่มความคมชัดและความสว่างของภาพ

สำหรับรูปภาพที่มีสติกเกอร์หรือลายน้ำ จะดำเนินการหลายขั้นตอน กระบวนการนี้เกี่ยวข้องกับการแปลงรูปภาพเป็นระดับสีเทา การใช้การแปลงทางสัณฐานวิทยา การใช้ขีดจำกัด (อาจเป็นการผกผันแบบไบนารีหรือการแปลง otsu) การแยกพิกเซลที่เข้มขึ้นในบริเวณที่มืดกว่า และสุดท้ายคือการวางพิกเซลที่เข้มกว่าในบริเวณลายน้ำ กลับมาที่กระบวนการกำจัดเงา

ประการแรก ใช้การขยายภาพกับภาพระดับสีเทา ด้านบนนี้ สีน้ำเงินปานกลางพร้อมเคอร์เนลที่เหมาะสมจะหยุดข้อความ ผลลัพธ์ของขั้นตอนนี้คือรูปภาพที่มีส่วนของเงาและการเปลี่ยนสีอื่นๆ ขณะนี้มีการคำนวณความแตกต่างอย่างง่ายระหว่างภาพต้นฉบับกับภาพที่ได้รับ สุดท้ายหลังจากใช้การจำกัดสิ่งที่เราได้คือภาพที่ไม่มีเงา

การรับรู้และการแยกข้อความ

สามารถสร้างและฝึกโมเดล Convolutional Neural Network กับข้อความที่พิมพ์อยู่ในรูปภาพได้ โมเดลนี้ยังสามารถใช้เพื่อตรวจจับข้อความจากรูปภาพอื่นๆ ที่คล้ายคลึงกันด้วยแบบอักษรเดียวกัน เอ็นจิ้น Tesseract OCR ใช้ในการกู้คืนข้อความจากรูปภาพที่ได้รับการประมวลผลโดยใช้อัลกอริธึมการมองเห็นของคอมพิวเตอร์

สำหรับการรู้จำอักขระด้วยแสง เราต้องทำการแปลข้อความ ตามด้วยการแบ่งกลุ่มอักขระ จากนั้นจึงจดจำอักขระ ขั้นตอนทั้งหมดนี้ดำเนินการโดย Tesseract OCR เอ็นจิ้น Tesseract OCR พิสูจน์ได้ว่ามีความแม่นยำสูงเมื่อใช้กับข้อความที่พิมพ์มากกว่าข้อความที่เขียนด้วยลายมือ

การรับข้อมูลที่เกี่ยวข้อง

พูดคุยเกี่ยวกับใบแจ้งหนี้โดยเฉพาะ จากข้อความทั้งหมดที่ดึงออกมา ข้อมูลสำคัญ เช่น วันที่ซื้อ จำนวนเงินทั้งหมด ฯลฯ สามารถรับได้โดยง่ายโดยใช้นิพจน์ทั่วไปหลายรายการ จำนวนเงินทั้งหมดที่ประทับบนใบแจ้งหนี้สามารถดึงออกมาได้โดยใช้นิพจน์ทั่วไป เนื่องจากมักจะปรากฏที่ส่วนท้ายของใบแจ้งหนี้ ข้อมูลที่เป็นประโยชน์หลายอย่างสามารถจัดเก็บตามวันที่เพื่อให้สามารถเข้าถึงได้ง่าย

ความแม่นยำ

ความแม่นยำในการดึงข้อความสามารถกำหนดเป็นอัตราส่วนของจำนวนข้อมูลที่ถูกต้องที่ได้รับจาก Tesseract OCR และมีอยู่แล้วในใบแจ้งหนี้กับจำนวนคำสะสมที่มีอยู่จริงในภาพข้อความ ความแม่นยำที่สูงขึ้นหมายถึงประสิทธิภาพของเทคนิคก่อนการประมวลผลที่สูงขึ้น และความสามารถของ Tesseract OCR ในการดึงข้อมูล

อะไรต่อไป?

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับแมชชีนเลิร์นนิง โปรดดูที่ IIIT-B & upGrad's PG Diploma in Machine Learning & AI ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 450 ชั่วโมง กรณีศึกษาและการมอบหมายมากกว่า 30 รายการ IIIT- สถานะศิษย์เก่า B, 5+ โครงการหลักที่ใช้งานได้จริง & ความช่วยเหลือด้านงานกับบริษัทชั้นนำ

เรียนรู้ หลักสูตร ML จากมหาวิทยาลัยชั้นนำของโลก รับ Masters, Executive PGP หรือ Advanced Certificate Programs เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

เป็นผู้นำการปฏิวัติเทคโนโลยีที่ขับเคลื่อนด้วย AI

สมัครโปรแกรมประกาศนียบัตรขั้นสูงในการเรียนรู้ของเครื่อง & NLP