ฉันไม่แน่ใจว่าต้องค้นหาคำศัพท์อะไร ดังนั้นชื่อของฉันจึงดูเก๋ไก๋... นี่คือขั้นตอนการทำงานที่ฉันมี:
- เอกสารกึ่งโครงสร้างจะถูกสแกนเป็นไฟล์ ไฟล์ต่างๆ จะถูก OCR เป็นข้อความ
- ข้อความถูกแยกวิเคราะห์เป็นวัตถุ Python
- อ็อบเจ็กต์ถูกทำให้เป็นอนุกรม (เป็น SQL, JSON หรืออะไรก็ตาม) เพื่อใช้งาน
เอกสารมีโครงสร้างดังนี้:
HEADER บลา บลา เพจ ###
บลา
ข้อความขยะ...
1. ข้อความคำถาม...
ดำเนินต่อไปจนถึงขณะนี้ A. ข้อความตัวเลือก...
โฆษณาsadsf ข. อีกหนึ่งทางเลือก...
<แข็งแกร่ง>2. คำถามอื่น...
ฉันต้องแยกคำถามและตัวเลือกออก ปัญหาคือ เนื่องจากข้อความเป็นเอาต์พุต OCR จึงมีการใช้การแทนที่แปลกๆ เป็นครั้งคราว เช่น '2' -> 'Z' ซึ่งทำให้นิพจน์ทั่วไปธรรมดาไร้ประโยชน์ ฉันได้ลองใช้โมดูล Levenshtein แล้ว แต่ก็ช่วยได้ แต่ต้องมีความรู้มาก่อนว่าควรคาดหวังระยะการแก้ไขเท่าใด
ฉันไม่รู้ว่าฉันต้องการสร้าง parser หรือไม่? เล็กเซอร์เหรอ? อื่น ๆ อีก? สิ่งนี้นำฉันไปสู่เส้นทางที่น่าสนใจแต่ไม่เกี่ยวข้องทุกรูปแบบ คำแนะนำจะได้รับการชื่นชมอย่างมาก โอ้ นอกจากนี้ ข้อความโดยทั่วไปนั้นมาจากโดเมนทางเทคนิคเฉพาะ ดังนั้นเครื่องมือสะกดคำทั่วไปจึงไม่มีประโยชน์มากนัก
เกี่ยวกับโครงสร้างของเอกสาร ไม่มีรูปแบบการมองเห็นที่ชัดเจน เช่น การขึ้นบรรทัดใหม่หรือการเยื้อง ยกเว้นความจริงที่ว่า "คำถาม" มักจะขึ้นต้นบรรทัด ความผิดพลาดในเอกสารอาจทำให้อักขระปรากฏขึ้นก่อนจุดเริ่มต้นของบรรทัด ซึ่งหมายความว่าบางสิ่งในบรรทัด r'^[0-9]+' ไม่น่าเชื่อถือ
แม้ว่า "คำถาม" จะเริ่มต้นด้วย int เสมอ มีจุดและเว้นวรรค OCR สามารถใช้แทนอักขระอื่นหรือข้ามอักขระได้ นี่ไม่ใช่ปัญหามากนักกับ Tesseract หรือ Cunieform แต่เป็นปัญหากระดาษคุณภาพต่ำ
#หมายเหตุ: สำหรับโปรเจ็กต์ที่เป็นปัญหา มีการตัดสินใจว่าการให้มนุษย์เตรียมข้อความ OCR นั้นดีกว่าการใช้เวลาเขียนโค้ดวิธีแก้ปัญหา ฉันยังคงชอบคำแนะนำที่ดีอย่างไรก็ตาม