แยกตารางจากรูปภาพใน Python
การแยกตารางออกจากรูปภาพอาจเป็นงานที่น่าเบื่อและใช้เวลานาน โดยเฉพาะถ้าคุณมีรูปภาพจำนวนมากที่ต้องประมวลผล อย่างไรก็ตาม ด้วยเครื่องมือและเทคนิคที่เหมาะสม คุณสามารถทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติและแยกตารางออกจากรูปภาพได้อย่างรวดเร็วและง่ายดาย
ในบทความนี้ เราจะมาดูวิธีแยกตารางออกจากรูปภาพโดยใช้ Python เราจะกล่าวถึงไลบรารี่ ( img2table ) ที่สามารถใช้เพื่อระบุและแยกตารางออกจากรูปภาพ พร้อมด้วยโค้ดตัวอย่างและคำอธิบาย ไม่ว่าคุณกำลังทำงานกับเอกสารที่สแกน ภาพถ่าย หรือรูปภาพประเภทอื่นๆ บทความนี้จะให้เครื่องมือและความรู้ที่จำเป็นแก่คุณในการแยกตารางอย่างมีประสิทธิภาพและแม่นยำ
img2table คืออะไร
Img2Tableเป็นไลบรารี Python ที่ตรงไปตรงมาและใช้งานง่ายสำหรับการแยกตารางและการระบุตัวตนที่ใช้การประมวลผลรูปภาพ OpenCV และรองรับไฟล์ PDF นอกเหนือจากรูปแบบไฟล์รูปภาพยอดนิยมส่วนใหญ่
ด้วยการออกแบบ จึงเป็นทางเลือกที่มีประโยชน์และหนักน้อยกว่าสำหรับโซลูชันที่ใช้โครงข่ายประสาทเทียม โดยเฉพาะอย่างยิ่งสำหรับการใช้งาน CPU
รองรับรูปแบบไฟล์ต่อไปนี้:
- ไฟล์ JPEG — .jpeg, .jpg, *.jpe
- กราฟิกเครือข่ายแบบพกพา — *.png
- ไฟล์ JPEG 2000 — *.jp2
- บิตแมปของ Windows — .bmp, .dib
- WebP — *.webp
- รูปแบบภาพแบบพกพา — .pbm, .pgm, .ppm .pxm, *.pnm
- ไฟล์ PFM — *.pfm
- ไฟล์อิมเมจ OpenEXR — *.exr
- กล่องขอบเขตระดับเซลล์ของตารางและการระบุตารางสำหรับรูปภาพและไฟล์ PDF
- การจัดการกับโครงสร้างตารางที่ซับซ้อน เช่น เซลล์ที่ผสาน
- การแยกชื่อตาราง
- แยกเนื้อหาตารางในขณะที่รองรับเครื่องมือและบริการ OCR
- การเป็นตัวแทน Pandas DataFrame และวัตถุอย่างง่ายที่เป็นตัวแทนของตารางที่แยกออกมาจะถูกส่งคืน
- รักษาโครงสร้างเดิมของตารางที่แยกออกมาโดยส่งออกเป็นไฟล์ Excel
การดำเนินการ
การติดตั้ง
เช่นเดียวกับแพ็คเกจ Python อื่น ๆ สามารถติดตั้ง img2table ผ่านpip.
pip install img2table
from img2table.document import Image
image = Image(src,dpi=200, detect_rotation=False)
ลองมาดูตัวอย่างกัน
from img2table.document import Image
# Instantiation of the image
img = Image(src="image.jpg")
# Table identification
imgage_tables = img.extract_tables()
# Result of table identification
imgage_tables
#output
[ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)),
ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]
from img2table.document import PDF
pdf = PDF(src, dpi=200, pages=[0, 2])
ทำงานร่วมกับ OCR
เพื่อแยกวิเคราะห์เนื้อหาของตารางimg2tableมีอินเทอร์เฟซสำหรับเครื่องมือและบริการ OCR ต่างๆ
from img2table.ocr import TesseractOCR
ocr = TesseractOCR(n_threads=1, lang="eng", tessdata_dir="...")
หมายเหตุ:การใช้Tesseract-OCRต้องติดตั้งก่อน
ลองมาดูตัวอย่างกัน
from img2table.document import PDF
from img2table.ocr import TesseractOCR
# Instantiation of the pdf
pdf = PDF(src="tablesfile.pdf")
# Instantiation of the OCR, Tesseract, which requires prior installation
ocr = TesseractOCR(lang="eng")
# Table identification and extraction
pdf_tables = pdf.extract_tables(ocr=ocr)
# We can also create an excel file with the tables
pdf.to_xlsx('tables.xlsx', ocr=ocr)
วิธีextract_tablesการของเอกสารทำให้สามารถแยกตารางหลายตารางพร้อมกันจากหน้า PDF หรือรูปภาพได้
from img2table.ocr import TesseractOCR
from img2table.document import Image
# Instantiation of OCR
ocr = TesseractOCR(n_threads=1, lang="eng")
# Instantiation of document, either an image or a PDF
doc = Image(src, dpi=200)
# Table extraction
extracted_tables = doc.extract_tables(ocr=ocr,
implicit_rows=True,
borderless_tables=False,
min_confidence=50)
บทสรุป
ไลบรารีOpenCV-pythonและOpenCVใช้สำหรับการประมวลผลภาพทั้งหมด Hough Transformซึ่งจดจำเส้นในรูปภาพ ทำหน้าที่เป็นรากฐานของอัลกอริทึม ทำให้เราสามารถจดจำเส้นแนวนอนและแนวตั้งของภาพได้ จริงๆ แล้วห้องสมุดไม่ได้มีอะไรมากไปกว่านี้อีกแล้ว เพราะตั้งใจให้ตรงไปตรงมาที่สุดเท่าที่จะทำได้ เพื่อหลีกเลี่ยงความยุ่งยากที่อาจเกิดขึ้นจากการใช้วิธีอื่น
ดูเอกสาร ประกอบของโครงการบนGitHub
มาเชื่อมต่อกับTwitterและLinkedIn กัน เถอะ คุณยังสามารถสมัครรับข้อมูลจากช่องYouTube ของฉัน
มีความสุขในการเข้ารหัส!





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)