สุดยอดความคิดเห็น
ความคิดเห็นที่ 3
ก่อนเขียนโปรแกรมมันต้องรู้ก่อนว่าจะทำมันด้วยวิธีการใด ให้ไปหาอ่านได้จาก IEEE ตัวอย่างคงไม่มี (ก็ไม่ทราบเหมือนกันว่าทำกันมาเยอะ แต่ทำไมไม่มี code ตัวอย่างให้ดู) ยังเป็นเรื่องลำบากอยู่นะครับ เอาเป็นว่าผมนำทางให้ ตั้งสมมติฐานก่อนว่า OCR ที่จะเอามาทำการวิเคราะห์เป็นตัวหนังสือที่ไม่ติดกัน (ไม่ใช่ตัวเขียน แต่เป็นตัวพิมพ์ หรือถ้าเป็นตัวเขียนก็จะต้องไม่ติดกัน)
1. scan กระดาษ A4 ที่มีตัวหนังสือเข้าไป ได้ภาพมา 1 ภาพ
2. เอาภาพที่ได้มา มาทำ Binary Image (คือภาพที่จะออกมาเป็นขาวกับดำเท่านั้น)
3. ลดหรือกรองจุดเล็กๆ บนภาพ (noise reduction) ก็ต้องไปดูเรื่อง opening
4. เอามาทำ Line Detection แยกเป็นบรรทัดก่อนก็ได้ เรียงลำดับบรรทัดให้ได้ก่อน (Vertical Projection) อาจใช้ Histogram เข้ามาช่วย
5. เอาแต่ละบรรทัดมาแยกเป็นตัวอักษร ก็ใช้ Histogram อีกนั่นละ เป็น (Horizontal Projection)
6. สิ่งที่จะได้ถึงขั้นตอนนี้ก็คือตัวอักษรแต่ว่าภาษาไทยจะมีระดับ เช่นคำว่า "ตุ่ม" ถ้าตัดออกมาได้จะได้ออกมาเป็น 2 ส่วนคือ ตุ่ กับ ม
7. ทำ Thin หรือใช้ Skeleton ทำให้ตัวอักษรบางลง ตัว "ตุ่" ก็จะถูกแยกออกจากกันได้
8. เอามาทำ Blob Detection อันนี้จะล้อมกรอบอักษรและสระได้ ตัว ตุ่ จะถูกล้อมกรอบเป็น 3 กรอบ
9. เอามา recognize คำ อันนี้เป็นเรื่องของ Machine Learning แล้ว ตรงนี้จะใช้อะไรก็ต้องไปศึกษาให้มาก เพราะบางตัว train แล้วใช้เวลานาน ลองใช้เป็น Template Matching หรือ Adaboots ดูนะครับ
10. เอาผลที่หาได้ออกมาแสดง
ลองดูนะครับ
1. scan กระดาษ A4 ที่มีตัวหนังสือเข้าไป ได้ภาพมา 1 ภาพ
2. เอาภาพที่ได้มา มาทำ Binary Image (คือภาพที่จะออกมาเป็นขาวกับดำเท่านั้น)
3. ลดหรือกรองจุดเล็กๆ บนภาพ (noise reduction) ก็ต้องไปดูเรื่อง opening
4. เอามาทำ Line Detection แยกเป็นบรรทัดก่อนก็ได้ เรียงลำดับบรรทัดให้ได้ก่อน (Vertical Projection) อาจใช้ Histogram เข้ามาช่วย
5. เอาแต่ละบรรทัดมาแยกเป็นตัวอักษร ก็ใช้ Histogram อีกนั่นละ เป็น (Horizontal Projection)
6. สิ่งที่จะได้ถึงขั้นตอนนี้ก็คือตัวอักษรแต่ว่าภาษาไทยจะมีระดับ เช่นคำว่า "ตุ่ม" ถ้าตัดออกมาได้จะได้ออกมาเป็น 2 ส่วนคือ ตุ่ กับ ม
7. ทำ Thin หรือใช้ Skeleton ทำให้ตัวอักษรบางลง ตัว "ตุ่" ก็จะถูกแยกออกจากกันได้
8. เอามาทำ Blob Detection อันนี้จะล้อมกรอบอักษรและสระได้ ตัว ตุ่ จะถูกล้อมกรอบเป็น 3 กรอบ
9. เอามา recognize คำ อันนี้เป็นเรื่องของ Machine Learning แล้ว ตรงนี้จะใช้อะไรก็ต้องไปศึกษาให้มาก เพราะบางตัว train แล้วใช้เวลานาน ลองใช้เป็น Template Matching หรือ Adaboots ดูนะครับ
10. เอาผลที่หาได้ออกมาแสดง
ลองดูนะครับ
แสดงความคิดเห็น
ถ้าผมจะพัฒนา OCR ใน OpenCV ควรใช้ภาษาใดเขียน
เข้าดูใน google เยอะไปหมด
ทั้ง basic , Python
แล้ว OpenCV กับ Emgu CV มันต่างกันอย่างไร
มีตัวอย่าง OCR ไหมครับ แยกอักษรออกจากภาพแล้วแปลงมาเป็น ฟอนต์อักษร