이 테이블의 데이터를 가져 오려고합니다. PDF입니다. 필자는 pdfminer와 pypdf를 약간의 노력으로 해봤지만 실제로 테이블에서 데이터를 가져올 수는 없습니다.pdf에서 테이블 추출
이 같은 테이블 중 하나가 모습입니다 : 당신이 볼 수 있듯이, 일부 열은 'X'로 표시됩니다
. 나는이 테이블에 객체의리스트를 넣으 려하고있다.
이 코드는 지금까지 pdfminer를 사용하고 있습니다.
# pdfminer test
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice, TagExtractor
from pdfminer.pdfpage import PDFPage, PDFTextExtractionNotAllowed
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter, PDFPageAggregator
from pdfminer.cmapdb import CMapDB
from pdfminer.layout import LAParams, LTTextBox, LTTextLine, LTFigure, LTImage
from pdfminer.image import ImageWriter
from cStringIO import StringIO
import sys
import os
def pdfToText(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = file(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ''
maxpages = 0
caching = True
pagenos = set()
records = []
i = 1
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,
caching=caching, check_extractable=True):
# process page
interpreter.process_page(page)
# only select lines from the line containing 'Tool' to the line containing "1 The 'All'"
lines = retstr.getvalue().splitlines()
idx = containsSubString(lines, 'Tool')
lines = lines[idx+1:]
idx = containsSubString(lines, "1 The 'All'")
lines = lines[:idx]
for line in lines:
records.append(line)
i += 1
fp.close()
device.close()
retstr.close()
return records
def containsSubString(list, substring):
# find a substring in a list item
for i, s in enumerate(list):
if substring in s:
return i
return -1
# process pdf
fn = '../test1.pdf'
ft = 'test.txt'
text = pdfToText(fn)
outFile = open(ft, 'w')
for i in range(0, len(text)):
outFile.write(text[i])
outFile.close()
텍스트 파일을 생성하고 텍스트를 모두 가져 오지만 x는 공백을 유지하지 않습니다. 출력은 다음과 같습니다는 X 그냥 하나의
현재 텍스트 문서에서 이격되어있다
, 난 그냥 텍스트 출력 생산하고있어하지만 내 목표는의 데이터로 HTML 문서를 생산하는 것입니다 테이블. 나는 OCR 예제를 찾고 있었고, 대부분은 혼란 스럽거나 불완전한 것으로 보인다. 나는 C#이나 다른 언어를 사용하여 내가 원하는 결과를 얻을 수있다.
EDIT : 테이블 데이터를 가져와야하는 이와 같은 다중 pdfs가 있습니다. 헤더는 모든 pdfs에 대해 동일합니다 (아는 한 멀리).
메모장에서 고정 폭 글꼴을 사용하고 있습니까? 그렇지 않은 경우 모든 배팅이 해제됩니다. –
Windows를 사용하는 경우 Cygwin을 사용할 수 있습니다. –
모노 스페이스 글꼴을 사용 중이며 cygwin을 사용할 수 있습니다. – user