Python의 이미지에서 테이블 추출

Feb 28 2023
이미지에서 테이블을 추출하는 것은 특히 처리할 이미지가 많은 경우 지루하고 시간이 많이 걸리는 작업이 될 수 있습니다. 그러나 올바른 도구와 기술을 사용하면 이 프로세스를 자동화하고 빠르고 쉽게 이미지에서 테이블을 추출할 수 있습니다.
Python 이미지의 이미지에서 테이블 추출

이미지에서 테이블을 추출하는 것은 특히 처리할 이미지가 많은 경우 지루하고 시간이 많이 걸리는 작업이 될 수 있습니다. 그러나 올바른 도구와 기술을 사용하면 이 프로세스를 자동화하고 빠르고 쉽게 이미지에서 테이블을 추출할 수 있습니다.

이 기사에서는 Python을 사용하여 이미지에서 테이블을 추출하는 방법을 살펴봅니다. 샘플 코드 및 설명과 함께 이미지에서 테이블을 식별하고 추출하는 데 사용할 수 있는 라이브러리( img2table )를 다룰 것입니다. 스캔한 문서, 사진 또는 기타 유형의 이미지로 작업하는 경우 이 문서는 표를 효율적이고 정확하게 추출하는 데 필요한 도구와 지식을 제공합니다.

img2table이란 무엇입니까?

Img2Table은 OpenCV 이미지 처리를 기반으로 하고 널리 사용되는 대부분의 이미지 파일 형식 외에도 PDF 파일을 지원하는 테이블 추출 및 식별을 위한 간단하고 사용자 친화적인 Python 라이브러리입니다.

설계로 인해 특히 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 채널을 구독할 수도 있습니다 .

행복한 코딩!