การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การตรวจจับตารางและการแยกข้อมูลโดยใช้การเรียนรู้เชิงลึก


รู้เบื้องต้นเกี่ยวกับการแยกตาราง

ปริมาณข้อมูลที่รวบรวมเพิ่มขึ้นอย่างมากในแต่ละวันด้วยแอพพลิเคชั่น ซอฟต์แวร์ และแพลตฟอร์มออนไลน์ที่เพิ่มขึ้น

ในการจัดการ/เข้าถึงข้อมูลขนาดใหญ่นี้อย่างมีประสิทธิผล จำเป็นต้องพัฒนาเครื่องมือดึงข้อมูลที่มีค่า

หนึ่งในพื้นที่ย่อยที่ต้องการความสนใจในฟิลด์การแยกข้อมูลคือการแยกตารางจากรูปภาพหรือการตรวจจับข้อมูลแบบตารางจากแบบฟอร์ม PDF และเอกสาร

การแยกตาราง เป็นหน้าที่ในการตรวจหาและสลายข้อมูลตารางในเอกสาร

Table OCR - Nanonets ดึงข้อมูลตารางออกจากรูปภาพ!
Table OCR – Nanonets ดึงข้อมูลตารางออกจากรูปภาพ!

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

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

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


ต้องการดึงข้อมูลแบบตารางจากใบแจ้งหนี้ ใบเสร็จ หรือเอกสารประเภทอื่นๆ หรือไม่? ตรวจสอบ Nanonets' ตัวแยกตาราง PDF เพื่อดึงข้อมูลตาราง กำหนดเวลาการสาธิต เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับระบบอัตโนมัติ การสกัดตาราง.


สารบัญ

แยกตารางออกจากรูปภาพด้วย Nanonets Table OCR

  • ลงชื่อ สำหรับบัญชี Nanonets ฟรี

    • อัปโหลดรูปภาพ/ไฟล์ไปยังโมเดล OCR ตารางนาโนเน็ต
    • Nanonets ตรวจจับและดึงข้อมูลตารางทั้งหมดโดยอัตโนมัติ
    • แก้ไขและตรวจสอบข้อมูล (ถ้าจำเป็น)
    • ส่งออกข้อมูลที่ประมวลผลเป็น Excel, csv หรือ JSON

แยกตารางออกจากรูปภาพด้วย Nanonets

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


นาโนเน็ตตาราง OCR API

ตาราง OCR กับ Nanonets
ตาราง OCR กับ Nanonets

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

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

คุณยังสามารถรับการตอบสนอง JSON ของการคาดคะเนแต่ละรายการเพื่อรวมเข้ากับระบบของคุณเอง และสร้างแอปที่ขับเคลื่อนด้วยการเรียนรู้ของเครื่อง ซึ่งสร้างขึ้นจากอัลกอริธึมล้ำสมัยและโครงสร้างพื้นฐานที่แข็งแกร่ง

https://nanonets.com/documentation/


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


ใครจะพบว่าการดึงตารางมีประโยชน์

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

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
ที่มา: แพทริค โทมัสโซ, อันสแปลช

กรณีใช้ส่วนตัว

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

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

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


กรณีใช้ในอุตสาหกรรม

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

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

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


กรณีการใช้งานทางธุรกิจ

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

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

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


มีปัญหา OCR ในใจหรือไม่? ต้องการแปลงเป็นดิจิทัล ใบแจ้งหนี้, PDF หรือป้ายทะเบียนรถ ? ตรงไปที่ นาโนเน็ต และสร้างโมเดล OCR ฟรี!


การเรียนรู้เชิงลึกในการดำเนินการ

การเรียนรู้เชิงลึกเป็นส่วนหนึ่งของวิธีการเรียนรู้ด้วยเครื่องในวงกว้างโดยอิงจากโครงข่ายประสาทเทียม

โครงข่ายประสาทเทียมเป็นเฟรมเวิร์กที่รับรู้ถึงความสัมพันธ์ที่ซ่อนอยู่ในข้อมูลที่กำหนดผ่านกระบวนการที่เลียนแบบวิธีการทำงานของสมองมนุษย์ พวกเขามีเลเยอร์เทียมที่แตกต่างกันซึ่งข้อมูลจะผ่าน ซึ่งพวกเขาเรียนรู้เกี่ยวกับคุณลักษณะต่างๆ มีสถาปัตยกรรมที่แตกต่างกัน เช่น Convolution NNs, Recurrent NNs, Autoencoders, Generative Adversarial NNs เพื่อประมวลผลข้อมูลประเภทต่างๆ สิ่งเหล่านี้ซับซ้อนแต่แสดงประสิทธิภาพสูงเพื่อจัดการกับปัญหาในแบบเรียลไทม์ ตอนนี้เรามาดูงานวิจัยที่ทำในฟิลด์การแยกตารางโดยใช้ Neural Networks และมาทบทวนกันโดยสังเขป


ตารางเน็ต

กระดาษ: TableNet: โมเดลการเรียนรู้เชิงลึกสำหรับการตรวจจับตารางแบบ end-to-end และการดึงข้อมูลแบบตารางจากรูปภาพเอกสารที่สแกน

บทนำ: TableNet เป็นสถาปัตยกรรมการเรียนรู้เชิงลึกสมัยใหม่ที่เสนอโดยทีมจากปีการวิจัย TCS ในปี 2019 แรงจูงใจหลักคือการดึงข้อมูลจากตารางที่สแกนผ่านโทรศัพท์มือถือหรือกล้อง

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

ชุดข้อมูล: ชุดข้อมูลที่ใช้คือ Marmot มี 2000 หน้าในรูปแบบ PDF ซึ่งรวบรวมด้วยข้อเท็จจริงที่เกี่ยวข้อง รวมถึงหน้าภาษาจีนด้วย ลิงค์ – http://www.icst.pku.edu.cn/cpdp/sjzy/index.htm

สถาปัตยกรรม: สถาปัตยกรรมนี้มีพื้นฐานมาจาก Long et al. ซึ่งเป็นแบบจำลองตัวเข้ารหัส-ตัวถอดรหัสสำหรับการแบ่งส่วนความหมาย เครือข่ายตัวเข้ารหัส/ตัวถอดรหัสเดียวกันถูกใช้เป็นสถาปัตยกรรม FCN สำหรับการแยกตาราง รูปภาพจะถูกประมวลผลล่วงหน้าและปรับแต่งโดยใช้ปุ่ม Tesseract OCR.

โมเดลนี้ได้มาจากสองขั้นตอนโดยนำข้อมูลเข้าไปสู่เทคนิคการเรียนรู้เชิงลึก ในระยะแรก พวกเขาใช้น้ำหนักของเครือข่าย VGG-19 ที่ผ่านการฝึกอบรมล่วงหน้า พวกเขาได้แทนที่เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์ของเครือข่าย VGG ที่ใช้แล้วด้วยเลเยอร์ Convolutional 1×1 เลเยอร์ convolutional ทั้งหมดตามด้วยการเปิดใช้งาน ReLU และเลเยอร์ความน่าจะเป็นแบบเลื่อนออก 0.8 พวกเขาเรียกเฟสที่สองว่าเป็นเครือข่ายถอดรหัสซึ่งประกอบด้วยสองสาขา เป็นไปตามสัญชาตญาณที่ว่าพื้นที่คอลัมน์เป็นส่วนย่อยของพื้นที่ตาราง ดังนั้น เครือข่ายการเข้ารหัสเดียวสามารถกรองขอบเขตที่แอ็คทีฟออกได้อย่างแม่นยำยิ่งขึ้นโดยใช้คุณลักษณะของทั้งบริเวณตารางและคอลัมน์ เอาต์พุตจากเครือข่ายแรกกระจายไปยังสองสาขา ในสาขาแรก มีการใช้การบิดสองครั้งและฟีเจอร์แมปสุดท้ายจะถูกเพิ่มสเกลเพื่อให้ตรงกับขนาดภาพดั้งเดิม ในสาขาอื่นสำหรับการตรวจจับคอลัมน์ มีเลเยอร์การบิดเพิ่มเติมพร้อมฟังก์ชันการเปิดใช้งาน ReLU และเลเยอร์ดร็อปเอาต์ที่มีความน่าจะเป็นการออกกลางคันแบบเดียวกับที่กล่าวไว้ก่อนหน้านี้ แผนผังคุณลักษณะได้รับการสุ่มตัวอย่างโดยใช้การบิดแบบแบ่งส่วนหลังจากเลเยอร์การบิด (1×1) ด้านล่างเป็นภาพสถาปัตยกรรม:

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
สถาปัตยกรรมของ TableNet

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

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

พวกเขายังเสนอรุ่นเดียวกันกับที่ปรับแต่งด้วย ICDAR ซึ่งทำงานได้ดีกว่ารุ่นดั้งเดิม Recall, Precision และ F1-Score ของรุ่นที่ปรับแต่งแล้วคือ 0.9628, 0.9697, 0.9662 ตามลำดับ รุ่นดั้งเดิมมีเมตริกที่บันทึกไว้เป็น 0.9621, 0.9547, 0.9583 ในลำดับเดียวกัน มาดำดิ่งสู่สถาปัตยกรรมอีกหนึ่งแห่งกัน


ดีพดีเอสอาร์ที

กระดาษ: DeepDeSRT: การเรียนรู้เชิงลึกสำหรับการตรวจจับและการรับรู้โครงสร้างของตารางในรูปภาพเอกสาร

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

  1. นำเสนอโซลูชันการเรียนรู้เชิงลึกสำหรับการตรวจจับตารางในรูปเอกสาร
  2. เสนอแนวทางการเรียนรู้เชิงลึกแบบใหม่สำหรับการจดจำโครงสร้างตาราง เช่น การระบุแถว คอลัมน์ และตำแหน่งเซลล์ในตารางที่ตรวจพบ

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

ชุดข้อมูล: ชุดข้อมูลที่ใช้คือชุดข้อมูลการแข่งขันตาราง ICDAR 2013 ที่มีเอกสาร 67 ฉบับ รวม 238 หน้า

สถาปัตยกรรม:

  • การตรวจจับตาราง โมเดลที่เสนอใช้ Fast RCNN เป็นเฟรมเวิร์กพื้นฐานสำหรับการตรวจจับตาราง สถาปัตยกรรมแบ่งออกเป็นสองส่วนที่แตกต่างกัน ในส่วนแรก พวกเขาสร้างข้อเสนอภูมิภาคตามรูปภาพที่ป้อนโดยเครือข่ายข้อเสนอภูมิภาคที่เรียกว่า (RPN) ในส่วนที่สอง พวกเขาจำแนกภูมิภาคโดยใช้ Fast-RCNN เพื่อสนับสนุนสถาปัตยกรรมนี้ พวกเขาใช้ แซฟเน็ต และน้ำหนักของ VGG-16
  • การรับรู้โครงสร้าง หลังจากที่ตรวจพบตารางสำเร็จและระบบทราบตำแหน่งแล้ว ความท้าทายต่อไปในการทำความเข้าใจเนื้อหาของตารางคือการจดจำและค้นหาตำแหน่งของแถวและคอลัมน์ที่ประกอบขึ้นเป็นโครงสร้างทางกายภาพของตาราง ดังนั้นพวกเขาจึงใช้เครือข่ายที่เชื่อมต่ออย่างสมบูรณ์โดยมีน้ำหนักของ VGG-16 ที่ดึงข้อมูลจากแถวและคอลัมน์ ด้านล่างนี้เป็นผลลัพธ์ของ DeepDeSRT:

ผล:

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
ผลลัพธ์ของการตรวจจับตาราง
การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
ผลลัพธ์ของการจดจำโครงสร้าง [6]

ผลการประเมินพบว่า DeepDeSRT มีประสิทธิภาพเหนือกว่าวิธีการที่ทันสมัยสำหรับการตรวจจับตารางและการรับรู้โครงสร้าง และบรรลุการวัด F1 ที่ 96.77% และ 91.44% สำหรับการตรวจจับตารางและการรับรู้โครงสร้าง ตามลำดับจนถึงปี 2015


กราฟโครงข่ายประสาท

กระดาษ: ทบทวนการจำแนกตารางโดยใช้กราฟโครงข่ายประสาทเทียม

บทนำ: ในงานวิจัยนี้ ผู้เขียนจาก Deep Learning Laboratory ศูนย์ปัญญาประดิษฐ์แห่งชาติ (NCAI) ได้เสนอ Graph Neural Networks เพื่อดึงข้อมูลจากตาราง พวกเขาแย้งว่าเครือข่ายกราฟเป็นทางเลือกที่เป็นธรรมชาติมากกว่าสำหรับปัญหาเหล่านี้และได้สำรวจโครงข่ายประสาทกราฟตามการไล่ระดับสีเพิ่มเติมสองเครือข่าย

โมเดลที่เสนอนี้รวมประโยชน์ของเครือข่ายประสาทเทียมทั้งสองแบบสำหรับการดึงคุณลักษณะภาพและเครือข่ายกราฟสำหรับการจัดการกับโครงสร้างปัญหา

ชุดข้อมูล: ผู้เขียนเสนอชุดข้อมูลที่สร้างขึ้นจากการสังเคราะห์ขนาดใหญ่จำนวน 0.5 ล้านตารางซึ่งแบ่งออกเป็นสี่ประเภท

  1. รูปภาพเป็นรูปภาพธรรมดาที่ไม่มีการผสานและมีเส้นแบ่ง
  2. รูปภาพมีประเภทเส้นขอบที่แตกต่างกัน รวมถึงการไม่มีเส้นแบ่งในบางครั้ง
  3. แนะนำการผสานเซลล์และคอลัมน์
  4. กล้องจับภาพด้วยการแปลงเปอร์สเปคทีฟเชิงเส้น

สถาปัตยกรรม: พวกเขาใช้เครือข่าย Convolutional ตื้นซึ่งสร้างคุณสมบัติ Convolutional ตามลำดับ หากมิติเชิงพื้นที่ของคุณสมบัติเอาท์พุตไม่เหมือนกับอิมเมจอินพุต พารามิเตอร์จะรวบรวมตำแหน่งที่ลดขนาดเป็นเส้นตรงขึ้นอยู่กับอัตราส่วนระหว่างมิติข้อมูลขาเข้าและขาออก และส่งไปยังเครือข่ายปฏิสัมพันธ์ที่มีเครือข่ายกราฟสองเครือข่ายที่เรียกว่า DGCNN และ GravNet พารามิเตอร์ของเครือข่ายกราฟเหมือนกับ CNN ดั้งเดิม ในท้ายที่สุด พวกเขาได้ใช้การสุ่มตัวอย่างคู่รันไทม์เพื่อจำแนกเนื้อหาที่แยกออกมาซึ่งใช้อัลกอริธึมแบบ Monte Carlo เป็นการภายใน ด้านล่างนี้คือผลลัพธ์:

Outputs:

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
เอาต์พุตที่สร้างโดย Graph Neural Networks

ด้านล่างนี้คือตัวเลขความแม่นยำแบบตารางที่สร้างโดยเครือข่ายสำหรับเครือข่ายสี่หมวดหมู่ดังที่แสดงใน ชุด ส่วน:

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

CGAN และขั้นตอนวิธีทางพันธุกรรม

กระดาษ: การแยกตารางออกจากเอกสารโดยใช้ Conditional Generative Adversarial Networks และ Genetic Algorithms

บทนำ: ในงานวิจัยนี้ ผู้เขียนใช้วิธีการจากบนลงล่างแทนการใช้วิธีการจากล่างขึ้นบน (การรวมเส้นเข้ากับเซลล์ แถวหรือคอลัมน์)

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

ชุดข้อมูล: ผู้เขียนใช้ชุดข้อมูลของตนเองซึ่งมี 4000 ตาราง

สถาปัตยกรรม: แบบจำลองที่เสนอประกอบด้วยสองส่วน ในส่วนแรก รูปภาพอินพุตจะถูกแยกออกเป็นตารางโครงกระดูกโดยใช้โครงข่ายประสาทเทียมแบบปฏิปักษ์ตามเงื่อนไข GAN มีสองเครือข่ายอีกครั้ง ตัวสร้างที่สร้างตัวอย่างสุ่มและตัวแบ่งแยกซึ่งบอกว่ารูปภาพที่สร้างขึ้นนั้นเป็นของปลอมหรือเป็นต้นฉบับ เครื่องกำเนิด G คือเครือข่ายตัวเข้ารหัส-ตัวถอดรหัสที่ภาพอินพุตจะถูกส่งผ่านชุดของเลเยอร์การสุ่มตัวอย่างแบบค่อยเป็นค่อยไปจนกระทั่งเป็นเลเยอร์คอขวดที่กระบวนการกลับด้าน ในการส่งข้อมูลไปยังเลเยอร์ถอดรหัสอย่างเพียงพอ จะใช้สถาปัตยกรรม U-Net ที่มีการเชื่อมต่อแบบข้าม และเพิ่มการเชื่อมต่อแบบข้ามระหว่างเลเยอร์ i และ n − i ผ่านการต่อกัน โดยที่ n คือจำนวนเลเยอร์ทั้งหมด และฉัน คือหมายเลขเลเยอร์ ในตัวเข้ารหัส สถาปัตยกรรม PatchGAN ใช้สำหรับ discriminator D ซึ่งจะลงโทษโครงสร้างภาพที่ส่งออกในระดับของแพตช์ สิ่งเหล่านี้สร้างผลลัพธ์เป็นตารางโครงกระดูก

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

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
แผนผังทั่วไปของแนวทาง

เอาท์พุต: โครงสร้างตารางโดยประมาณถูกประเมินโดยการเปรียบเทียบ – หมายเลขแถวและคอลัมน์ , ตำแหน่งมุมบนซ้าย, ความสูงของแถวและความกว้างของคอลัมน์

อัลกอริธึมทางพันธุกรรมให้ความแม่นยำในแถวที่ 95.5% และความแม่นยำของคอลัมน์ 96.7% ในขณะที่ดึงข้อมูลจากตาราง

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

จำเป็นต้องแปลงเอกสารเป็นดิจิทัล รายรับ or ใบแจ้งหนี้ แต่ขี้เกียจเกินไปที่จะเขียนโค้ด? ตรงไปที่ นาโนเน็ต และสร้างโมเดล OCR ฟรี!


[รหัส] แนวทางดั้งเดิม

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

เพื่อให้เข้าใจปัญหาได้อย่างแม่นยำยิ่งขึ้น เราได้กำหนดคำศัพท์พื้นฐานซึ่งจะใช้ในบทความ:

  • ข้อความ: มีสตริงและแอตทริบิวต์ห้ารายการ (บน, ซ้าย, ความกว้าง, ความสูง, แบบอักษร)
  • Line: มีวัตถุข้อความที่ถือว่าอยู่ในบรรทัดเดียวกันในไฟล์ต้นฉบับ
  • แถวเดียว: วัตถุเส้นที่มีวัตถุข้อความเพียงวัตถุเดียว
  • หลายบรรทัด: วัตถุเส้นที่มีวัตถุข้อความมากกว่าหนึ่งรายการ
  • หลายบรรทัด ปิดกั้น: ชุดของออบเจ็กต์หลายบรรทัดต่อเนื่อง
  • แถว: บล็อคแนวนอนในตาราง
  • คอลัมน์: บล็อกแนวตั้งในตาราง
  • เซลล์: จุดตัดของแถวและคอลัมน์
  • เซลล์ – ช่องว่างภายใน: ช่องว่างภายในหรือช่องว่างภายในเซลล์

การตรวจจับตารางด้วย OpenCV

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

เราต้องการรูปภาพของตาราง เราสามารถจับภาพนี้บนโทรศัพท์หรือใช้ภาพที่มีอยู่ ด้านล่างเป็นข้อมูลโค้ด

file = r’table.png’
table_image_contour = cv2.imread(file, 0)
table_image = cv2.imread(file)

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

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
ภาพของตาราง

เราจะใช้เทคนิคที่เรียกว่า เกณฑ์ภาพผกผัน ซึ่งช่วยเพิ่มข้อมูลที่มีอยู่ในภาพที่กำหนด

ret, thresh_value = cv2.threshold( table_image_contour, 180, 255, cv2.THRESH_BINARY_INV)

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

kernel = np.ones((5,5),np.uint8)
dilated_value = cv2.dilate(thresh_value,kernel,iterations = 1)

ใน OpenCV เราใช้วิธีการ ค้นหารูปร่าง เพื่อให้ได้รูปทรงในภาพปัจจุบัน วิธีนี้ใช้อาร์กิวเมนต์สามข้อ อย่างแรกคือรูปภาพที่ขยาย (รูปภาพที่ใช้สร้างรูปภาพที่ขยายคือ table_image_contour – วิธี findContours รองรับเฉพาะรูปภาพไบนารีเท่านั้น) วิธีที่สองคือ cv2.RETR_TREE ซึ่งบอกให้เราใช้โหมดการดึงเส้นขอบ ที่สามคือ  cv2.CHAIN_APPROX_SIMPLE ซึ่งเป็นโหมดการประมาณรูปร่าง ดิ ค้นหารูปร่าง แยกค่าสองค่าออกมา ดังนั้นเราจะเพิ่มตัวแปรอีกตัวหนึ่งชื่อ ลำดับชั้น. เมื่อรูปภาพซ้อนกัน เส้นขอบจะแสดงการพึ่งพาซึ่งกันและกัน เพื่อแสดงความสัมพันธ์ดังกล่าว จะใช้ลำดับชั้น

contours, hierarchy = cv2.findContours( dilated_value, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

เส้นขอบจะระบุตำแหน่งที่มีข้อมูลอยู่ในภาพ ตอนนี้ เราวนซ้ำรายการเส้นขอบที่เราคำนวณในขั้นตอนก่อนหน้า และคำนวณพิกัดของกล่องสี่เหลี่ยมตามที่สังเกตในภาพต้นฉบับโดยใช้วิธีการ  cv2.boundingRect. ในการทำซ้ำครั้งล่าสุด เราใส่กล่องเหล่านั้นลงในภาพต้นฉบับ table_image โดยใช้เมธอด cv2.สี่เหลี่ยมผืนผ้า().

for cnt in contours: x, y, w, h = cv2.boundingRect(cnt) # bounding the images if y < 50: table_image = cv2.rectangle(table_image, (x, y), (x + w, y + h), (0, 0, 255), 1) 

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

plt.imshow(table_image)
plt.show()
cv2.namedWindow('detecttable', cv2.WINDOW_NORMAL)

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
Outputs

เปลี่ยนค่าของ y เป็น 300 ในข้อมูลโค้ดด้านบน นี่จะเป็นผลลัพธ์ของคุณ:

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เมื่อคุณแยกตารางแล้ว คุณสามารถเรียกใช้การครอบตัดเส้นขอบทั้งหมดผ่านเอ็นจิ้น tesseract OCR ซึ่งเป็นบทช่วยสอนที่สามารถพบได้ โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม. เมื่อเรามีกล่องของแต่ละข้อความแล้ว เราสามารถจัดกลุ่มข้อความตามพิกัด x และ y เพื่อหาว่าแถวและคอลัมน์ใดที่ตรงกัน

นอกจากนี้ยังมีตัวเลือกในการใช้ PDFMiner เพื่อเปลี่ยนเอกสาร pdf ของคุณให้เป็นไฟล์ HTML ที่เราสามารถแยกวิเคราะห์โดยใช้นิพจน์ทั่วไปเพื่อให้ได้ตารางของเราในที่สุด นี่คือวิธีที่คุณสามารถทำได้


PDFMiner และการแยกวิเคราะห์ Regex

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

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

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

ด้านล่างนี้คือข้อมูลโค้ด:

from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import HTMLConverter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO
import re def convert_pdf_to_html(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = file(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 #is for all caching = True pagenos=set() for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True): interpreter.process_page(page) fp.close() device.close() str = retstr.getvalue() retstr.close() return str

เครดิตรหัส: เซฟรอส

เรานำเข้าโมดูลจำนวนมากรวมถึงไลบรารีที่เกี่ยวข้องกับนิพจน์ทั่วไปและ PDF ในวิธีการ Convert_pdf_to_html, เราส่งเส้นทางของไฟล์ PDF ซึ่งจำเป็นต้องแปลงเป็นไฟล์ HTML ผลลัพธ์ของวิธีการจะเป็นสตริง HTML ดังที่แสดงด้านล่าง:

'<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">Changing Echoesn<br>7632 Pool Station Roadn<br>Angels Camp, CA 95222n<br>(209) 785-3667n<br>Intake: (800) 633-7066n<br>SA </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> TX DT BU </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> RS RL OP PH </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> CO CJ n<br></span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> SF PI </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> AH SPn<br></span></div>' 

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

ไลบรารีนี้มีวิธีการต่างๆ ในตัวเพื่อจับคู่และค้นหารูปแบบ ด้านล่างนี้คือบางส่วน:

import re # Match the pattern in the string
re.match(pattern, string) # Search for a pattern in a string
re.search(pattern, string) # Finds all the pattern in a string
re.findall(pattern, string) # Splits string based on the occurrence of pattern
re.split(pattern, string, [maxsplit=0] # Search for the pattern and replace it with the given string
re.sub(pattern, replace, string)

อักขระ/นิพจน์ที่คุณมักจะเห็นในนิพจน์ทั่วไป ได้แก่:

  • [AZ] - ตัวพิมพ์ใหญ่ใด ๆ
  • d - หลัก
  • w - อักขระคำ (ตัวอักษร ตัวเลข และขีดล่าง)
  • s - ช่องว่าง (ช่องว่าง แท็บ และช่องว่าง)

ตอนนี้ เพื่อค้นหารูปแบบเฉพาะใน HTML เราใช้นิพจน์ทั่วไปแล้วเขียนรูปแบบตามนั้น ก่อนอื่นเราแบ่งข้อมูลโดยแยกส่วนที่อยู่ออกเป็นบล็อกแยกตามชื่อโปรแกรม (ANGELS CAMP, APPLE VALLEY เป็นต้น):

pattern = '(?<=<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">)(.*?)(?=<br></span></div>)' for programinfo in re.finditer(pattern, biginputstring, re.DOTALL): do looping stuff…

ต่อมาเราจะพบชื่อโปรแกรม เมือง รัฐ และรหัสไปรษณีย์ ที่มีรูปแบบเดียวกันเสมอ (ข้อความ, เครื่องหมายจุลภาค, ตัวพิมพ์ใหญ่สองหลัก, ตัวเลข 5 ตัว (หรือตัวเลข 5 ตัว ยัติภังค์สี่ตัว) ซึ่งจะมีอยู่ในไฟล์ PDF ซึ่ง เราถือว่าเป็นข้อมูลเข้า) ตรวจสอบข้อมูลโค้ดต่อไปนี้:

# To identify the program name
programname = re.search('^(?!<br>).*(?=\n)', programinfo.group(0))
# since some programs have odd characters in the name we need to escape
programname = re.escape(programname) citystatezip =re.search('(?<=>)([a-zA-Zs]+, [a-zA-Zs]{2} d{5,10})(?=\n)', programinfo.group(0))
mainphone =re.search('(?<=<br>)(d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)', programinfo.group(0))
altphones = re.findall('(?<=<br>)[a-zA-Zs]+: (d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)(?=\n)', programinfo.group(0)) 

นี่เป็นตัวอย่างง่ายๆ ที่อธิบายว่าเราดึงข้อมูลจากไฟล์ PDF โดยใช้นิพจน์ทั่วไปได้อย่างไร หลังจากแยกข้อมูลที่จำเป็นทั้งหมดแล้ว เราจะโหลดข้อมูลนี้ลงในไฟล์ CSV

def createDirectory(instring, outpath, split_program_pattern): i = 1 with open(outpath, 'wb') as csvfile: filewriter = csv.writer(csvfile, delimiter=',' , quotechar='"', quoting=csv.QUOTE_MINIMAL) # write the header row filewriter.writerow(['programname', 'address', 'addressxtra1', 'addressxtra2', 'city', 'state', 'zip', 'phone', 'altphone', 'codes']) # cycle through the programs for programinfo in re.finditer(split_program_pattern, instring, re.DOTALL): print i i=i+1 # pull out the pieces programname = getresult(re.search('^(?!<br>).*(?=\n)', programinfo.group(0))) programname = re.escape(programname) # some facilities have odd characters in the name

นี่เป็นตัวอย่างง่ายๆ ที่อธิบายว่าคุณสามารถพุช HTML ที่แยกออกมาเป็นไฟล์ CSV ได้อย่างไร ขั้นแรก เราสร้างไฟล์ CSV ค้นหาแอตทริบิวต์ทั้งหมดของเรา และพุชทีละรายการในคอลัมน์ที่เกี่ยวข้อง ด้านล่างนี้เป็นภาพหน้าจอ:

การตรวจจับตารางและการแยกข้อมูลโดยใช้ Deep Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.
ภาพหน้าจอของรายการที่ดึงมาจากตารางโดยใช้นิพจน์ทั่วไป

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


ความท้าทายด้วยวิธีดั้งเดิม

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


การตรวจจับตาราง

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

  • การแปลงภาพ: การแปลงภาพเป็นขั้นตอนหลักในการตรวจจับฉลาก ซึ่งรวมถึงการปรับปรุงข้อมูลและเส้นขอบที่มีอยู่ในตาราง เราจำเป็นต้องเลือกอัลกอริธึมการประมวลผลล่วงหน้าที่เหมาะสมตามข้อมูลที่แสดงในตาราง ตัวอย่างเช่น เมื่อเราทำงานกับรูปภาพ เราจำเป็นต้องใช้การตรวจวัดธรณีประตูและตัวตรวจจับขอบ ขั้นตอนการเปลี่ยนแปลงนี้ช่วยให้เราค้นหาเนื้อหาได้แม่นยำยิ่งขึ้น ในบางกรณี รูปทรงอาจผิดพลาดและอัลกอริทึมไม่สามารถปรับปรุงภาพได้ ดังนั้น การเลือกขั้นตอนการแปลงภาพที่เหมาะสมและการประมวลผลล่วงหน้าจึงเป็นสิ่งสำคัญ
  • คุณภาพของภาพ: เมื่อเราสแกนตารางเพื่อดึงข้อมูล เราจำเป็นต้องตรวจสอบให้แน่ใจว่าเอกสารเหล่านี้ถูกสแกนในสภาพแวดล้อมที่สว่างกว่า ซึ่งจะทำให้ได้ภาพคุณภาพดี เมื่อสภาพแสงไม่ดี อัลกอริธึม CV และ DL อาจล้มเหลวในการตรวจจับตารางในอินพุตที่กำหนด หากเราใช้การเรียนรู้เชิงลึก เราจำเป็นต้องตรวจสอบให้แน่ใจว่าชุดข้อมูลมีความสอดคล้องและมีชุดรูปภาพมาตรฐานที่ดี หากเราใช้แบบจำลองเหล่านี้บนโต๊ะที่มีกระดาษยู่ยี่ ขั้นแรกเราต้องประมวลผลล่วงหน้าและขจัดสัญญาณรบกวนในภาพเหล่านั้น
  • เลย์เอาต์โครงสร้างและเทมเพลตที่หลากหลาย: ตารางทั้งหมดไม่ซ้ำกัน เซลล์หนึ่งเซลล์สามารถแผ่ขยายได้หลายเซลล์ ไม่ว่าจะในแนวตั้งหรือแนวนอน และการผสมผสานระหว่างเซลล์ที่ขยายออกสามารถสร้างรูปแบบโครงสร้างได้มากมาย นอกจากนี้ บางฟีเจอร์เน้นย้ำข้อความ และเส้นตารางอาจส่งผลต่อวิธีการทำความเข้าใจโครงสร้างของตาราง ตัวอย่างเช่น เส้นแนวนอนหรือข้อความตัวหนาอาจเน้นหลายส่วนหัวของตาราง โครงสร้างของตารางจะกำหนดความสัมพันธ์ระหว่างเซลล์ด้วยสายตา ความสัมพันธ์แบบเห็นภาพในตารางทำให้ยากต่อการคำนวณหาเซลล์ที่เกี่ยวข้องและดึงข้อมูลจากเซลล์เหล่านั้น ดังนั้น การสร้างอัลกอริธึมที่มีประสิทธิภาพในการจัดการโครงสร้างต่างๆ ของตารางจึงเป็นสิ่งสำคัญ
  • การขยายเซลล์, ระยะขอบ, เส้นขอบ: สิ่งเหล่านี้เป็นสิ่งจำเป็นสำหรับตารางใดๆ - ช่องว่างภายใน ระยะขอบ และเส้นขอบจะไม่เหมือนเดิมเสมอไป ตารางบางตารางมีช่องว่างภายในเซลล์จำนวนมาก และบางตารางไม่มี การใช้รูปภาพคุณภาพดีและขั้นตอนก่อนการประมวลผลจะช่วยให้กระบวนการแยกตารางทำงานได้อย่างราบรื่น

การแยกตาราง

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

  • เนื้อหาหนาแน่น: เนื้อหาของเซลล์อาจเป็นตัวเลขหรือข้อความก็ได้ อย่างไรก็ตาม เนื้อหาที่เป็นข้อความมักจะหนาแน่น โดยมีข้อความสั้นๆ ที่คลุมเครือโดยใช้ตัวย่อและตัวย่อ เพื่อให้เข้าใจตาราง ข้อความจะต้องมีความกำกวม และต้องขยายคำย่อและตัวย่อ
  • แบบอักษรและรูปแบบต่างๆ: แบบอักษรมักมีสไตล์ สี และความสูงต่างกัน เราจำเป็นต้องตรวจสอบให้แน่ใจว่าสิ่งเหล่านี้เป็นแบบทั่วไปและง่ายต่อการระบุ ตระกูลฟอนต์บางตระกูลโดยเฉพาะกลุ่มที่อยู่ภายใต้การสะกดหรือเขียนด้วยลายมือนั้นยากต่อการแตกไฟล์เล็กน้อย ดังนั้น การใช้แบบอักษรที่ดีและการจัดรูปแบบที่เหมาะสมจะช่วยให้อัลกอริทึมระบุข้อมูลได้แม่นยำยิ่งขึ้น
  • PDF หลายหน้าและตัวแบ่งหน้า: บรรทัดข้อความในตารางมีความไวต่อขีดจำกัดที่กำหนดไว้ล่วงหน้า ด้วยการขยายเซลล์ในหลาย ๆ หน้า การระบุตารางจึงเป็นเรื่องยาก บนเพจแบบหลายตาราง เป็นการยากที่จะแยกแยะตารางที่ต่างกันออกจากกัน โต๊ะที่กระจัดกระจายและไม่สม่ำเสมอนั้นใช้งานยาก ดังนั้น เส้นการปกครองแบบกราฟิกและโครงร่างเนื้อหาจึงควรใช้ร่วมกันเป็นแหล่งสำคัญสำหรับการจำแนกขอบเขตของตาราง

การแปลงตาราง

ขั้นตอนสุดท้ายรวมถึงการแปลงข้อมูลที่แยกจากตารางเพื่อรวบรวมเป็นเอกสารที่แก้ไขได้ ทั้งใน excel หรือใช้ซอฟต์แวร์อื่น มาเรียนรู้เกี่ยวกับความท้าทายบางอย่างกัน

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

นี่คือความท้าทายที่เราเผชิญระหว่างกระบวนการสกัดโต๊ะโดยใช้เทคนิคดั้งเดิม ตอนนี้เรามาดูวิธีเอาชนะสิ่งเหล่านี้ด้วยความช่วยเหลือของ Deep Learning กำลังมีการวิจัยอย่างกว้างขวางในภาคส่วนต่างๆ



ต้องแปลงเอกสาร ใบเสร็จ หรือ ใบแจ้งหนี้ แต่ขี้เกียจเกินไปที่จะเขียนโค้ด? ตรงไปที่ นาโนเน็ต และสร้างโมเดล OCR ฟรี!


สรุป

ในบทความนี้ เราได้ตรวจสอบรายละเอียดเกี่ยวกับการดึงข้อมูลจากตาราง เราได้เห็นแล้วว่าเทคโนโลยีสมัยใหม่อย่าง Deep Learning และ Computer Vision สามารถทำงานปกติได้โดยอัตโนมัติด้วยการสร้างอัลกอริธึมที่แข็งแกร่งในการให้ผลลัพธ์ที่แม่นยำ ในส่วนเริ่มต้น เราได้เรียนรู้เกี่ยวกับบทบาทของการแยกตารางในการอำนวยความสะดวกให้กับงานบุคคล อุตสาหกรรม และภาคธุรกิจ และยังตรวจสอบกรณีการใช้งานที่ละเอียดในการแยกตารางจาก PDF/HTML, แบบฟอร์มอัตโนมัติ ใบกำกับสินค้า ระบบอัตโนมัติ ฯลฯ เราได้เข้ารหัสอัลกอริทึมโดยใช้ Computer Vision เพื่อค้นหาตำแหน่งของข้อมูลในตารางโดยใช้เทคนิคธรณีประตู การขยาย และการตรวจจับเส้นขอบ เราได้พูดถึงความท้าทายที่เราอาจเผชิญระหว่างการตรวจจับตาราง การดึงข้อมูล และกระบวนการแปลงเมื่อใช้เทคนิคทั่วไป และระบุว่าการเรียนรู้เชิงลึกสามารถช่วยเราในการเอาชนะปัญหาเหล่านี้ได้อย่างไร สุดท้าย เราได้ตรวจสอบสถาปัตยกรรมโครงข่ายประสาทเทียมสองสามตัวและเข้าใจวิธีการบรรลุการแยกตารางตามข้อมูลการฝึกอบรมที่ให้มา



ปรับปรุง:
‌ เพิ่มเนื้อหาการอ่านเพิ่มเติมเกี่ยวกับวิธีการต่างๆ ในการตรวจจับตารางและการดึงข้อมูลโดยใช้การเรียนรู้เชิงลึก

ประทับเวลา:

เพิ่มเติมจาก AI และการเรียนรู้ของเครื่อง