2 คะแนน โดย GN⁺ 2024-05-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

การแก้ไขหน้ากระดาษที่บิดเบี้ยว (Page Dewarping)

  • เข้าหาปัญหาการคลี่ภาพหน้ากระดาษที่ม้วนงอในรูปแบบของปัญหาการหาค่าเหมาะที่สุด

ที่มา

  • วิธีแก้ไขความบิดเบี้ยวแบบเดิม เช่น ไลบรารี Leptonica หรือวิธี Coordinate Transform Model (CTM) ใช้แนวทางการแยกปัญหาแบบลำดับชั้น
    1. แยกข้อความออกเป็นบรรทัด
    2. หา warping หรือการแปลงพิกัดเพื่อทำให้บรรทัดขนานกันและอยู่ในแนวนอน
  • ได้แรงบันดาลใจจากแนวทางที่อิงโมเดลทรงกระบอก 3D ของ CTM จึงสร้างโมเดลเชิงพารามิเตอร์ของตนเองโดยใช้พารามิเตอร์ที่กำหนดรูปร่างของหน้าเอกสาร
    • เช่น เวกเตอร์การหมุน/การเลื่อนใน 3D, ความชันของความโค้งของหน้า, ออฟเซ็ตเส้นแนวนอน เป็นต้น
  • นิยามเป็นปัญหาการหาค่าเหมาะที่สุด
    • ค้นหา keypoint ตามบริเวณข้อความแนวนอนในภาพต้นฉบับ
    • เริ่มจากค่าประมาณเริ่มต้น แล้วปรับพารามิเตอร์ของโมเดลให้เหมาะที่สุดเพื่อลด reprojection error ของ keypoint ให้ต่ำที่สุด

ขั้นตอน

  1. แยกขอบเขตของหน้าเอกสาร
  2. ตรวจจับเส้นขอบข้อความ
  • ใช้การทำไบนารี, การคำนวณเชิงสัณฐานวิทยา และการวิเคราะห์ connected component
  • ปรับให้ตรวจจับตารางข้อความแนวตั้งได้ด้วย
  1. จัดกลุ่มเส้นขอบข้อความเป็นบริเวณแนวนอน
  2. สุ่มตัวอย่าง keypoint จากบริเวณแนวนอน
  3. ประมาณค่าพารามิเตอร์เริ่มต้นของโมเดล
  4. ลด reprojection error ให้ต่ำที่สุดด้วยการหาค่าเหมาะที่สุด
  • ใช้ตัวแก้ปัญหา Powell ของ scipy.optimize.minimize
  • ใช้เวลาส่วนใหญ่ของการรันทั้งหมด
  1. แปลงพิกัดด้วยโมเดลที่เหมาะที่สุด แล้วทำ image remapping และการทำไบนารี

ผลลัพธ์

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

สรุป

  • เป็นเวิร์กโฟลว์แบบคลาสสิกของการสั่งสมความรู้พื้นฐานแล้วทำให้เป็นปัญหาการหาค่าเหมาะที่สุดอย่างเป็นทางการ
  • เป็นแนวทางที่คล้ายกับ Deformable Part Model และ Active Appearance Model
  • ยังได้เทคนิคการใช้เครื่องมืออย่าง Emacs, Pylint เป็นต้น
  • แม้จะไม่มีแผนพัฒนาต่อเพิ่มเติม แต่เป็นโปรเจกต์ที่น่าใช้อ้างอิงเวลาเรียนการสอนคอมพิวเตอร์วิทัศน์

ความเห็นของ GN⁺

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

1 ความคิดเห็น

 
GN⁺ 2024-05-14
ความคิดเห็นบน Hacker News

สรุป:

  • ควรระวังการใช้ค่า threshold สูงตอนทำ image binarization
    • ใช้ได้ดีกับข้อความทั่วไป แต่ภาพประกอบหรือเชิงอรรถอาจเสียหายจนอ่านแทบไม่ได้
    • ถ้าเหลือแค่สแกนจาก Google Books ก็อาจซวยได้
  • ทั้งที่ปี 2024 แล้ว แต่แอปสแกนเอกสารยังไม่มีฟีเจอร์นี้ฝังมาให้
  • John Warnock อดีต CEO ของ Adobe ทุ่มเทกับการอนุรักษ์หนังสือประวัติศาสตร์หายาก
    • de-curling ของหน้าสแกนที่กางออกไม่ได้เป็นโจทย์สำคัญ
    • โปรเจกต์ที่เกี่ยวข้อง: Rare Book Room
  • บทความนี้เป็นตัวอย่างที่ดีของการทำเอกสารอธิบายโปรเจกต์ทางเทคนิคและการตัดสินใจอย่างมีประสิทธิภาพ ซึ่งน่าเอาไปอ้างอิงในที่ทำงาน
  • ตอนมหาวิทยาลัยเคยทำแอปสแกนโน้ตที่มีการใช้สีแยกประเภท แล้วไปเจอปัญหาสีเพี้ยน
    • สีด้านบนกับด้านล่างของหน้ากระดาษต่างกัน ทำให้แยกปากกาสีน้ำเงินกับสีเขียวได้ยาก
  • ผลลัพธ์ดูใช้ได้ แต่โมเดล warp ค่อนข้างเป็นแบบทั่วทั้งภาพ
    • จับความบิดเบี้ยวซับซ้อนของกระดาษได้ไม่ครบ เลยยังเห็นความเพี้ยนหลงเหลือในผลลัพธ์สุดท้าย
  • เป็นบทความน่าสนใจจากปี 2016 ที่เสียดายว่าไม่ได้เห็นตอนนั้น
    • อธิบายครบทั้งการนิยามปัญหา การใช้เทคนิคอย่างชาญฉลาด และการได้มาซึ่งโซลูชันที่ใช้งานได้ดี
    • ถึงคงไม่ได้มีโอกาสใช้เอง แต่เป็นตัวอย่างที่ยอดเยี่ยมของกระบวนการแก้ปัญหา
  • เจอข้อผิดพลาดตอนติดตั้ง เลยไปเปิด GitHub issue ไว้แล้ว
  • น่าลองทำ de-wrinkling สำหรับใบเสร็จด้วย
  • ถ้าต้องการแค่ OCR อาจข้ามขั้นตอนนี้ไปได้
  • Google แก้ปัญหานี้ได้ตั้งแต่ 10 ปีก่อนแล้ว
  • ถ้าเป็นหนังสือหรือเอกสารเก่าที่มีคุณค่า อาจใช้ X-ray tomography ทำ de-warping แบบไม่ต้องสัมผัสได้