2014-10-16 4 views
5

저는 파이썬 2에서 3으로 옮기기를 원했기 때문에 파이썬 3.4에서 pdfmine.3kr을 사용해 보았습니다. 그들이 모든 것을 편집 한 것처럼 보입니다. 그들의 변경 로그는 그들이 한 변화를 반영하지 않지만 pdfminer3k로 pdf를 파싱하는 데 성공하지 못했습니다. 예 :pdfminer3k에는 PDFPage에 create_pages라는 메서드가 없습니다.

그들은 PDF 문서를 pdfparser로 옮겼습니다 (잘못 입력하면 죄송합니다). PDFPage는 이제 사라진 create_pages 메소드를 사용했습니다. PDFPage 내부에서 볼 수있는 것은 모두 내부 메서드입니다. 누구든지 pdfminer3k의 작동 예제가 있습니까? 변경 사항을 반영하는 새로운 문서가없는 것 같습니다.

+0

정확히 무엇을 찾으십니까? pdfminer3k에서'create_pages'하는 방법? – avi

+0

어디서든 문서화되지 않은 새로운 API를 기반으로 pdfminer3k를 사용하여 pdfminer를 사용하여 동일한 작업을 수행 할 수있는 예제를 찾고 있습니다. –

답변

22

pdf 파일에서 텍스트를 읽는 데 관심이있는 경우 다음 코드는 python 3.4를 사용하여 pdfminer3k와 작동합니다.

from pdfminer.pdfparser import PDFParser, PDFDocument 
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import PDFPageAggregator 
from pdfminer.layout import LAParams, LTTextBox, LTTextLine 

fp = open('file.pdf', 'rb') 
parser = PDFParser(fp) 
doc = PDFDocument() 
parser.set_document(doc) 
doc.set_parser(parser) 
doc.initialize('') 
rsrcmgr = PDFResourceManager() 
laparams = LAParams() 
device = PDFPageAggregator(rsrcmgr, laparams=laparams) 
interpreter = PDFPageInterpreter(rsrcmgr, device) 
# Process each page contained in the document. 
for page in doc.get_pages(): 
    interpreter.process_page(page) 
    layout = device.get_result() 
    for lt_obj in layout: 
     if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine): 
      print(lt_obj.get_text()) 

fp.close() 
+0

스캔 한 이미지와 함께 작동하지 않는다고 가정하고 있습니까? 아마도 텍스트 상자 나 텍스트 줄이 없기 때문일 것입니다. – Jglstewart

+0

@ Jgltewart 그 종류의 pdf 문서는 각 페이지를 이미지로 변환하고 각 이미지에 OCR을 사용하여 텍스트를 가져와야합니다. OCR의 예는 Tesseract입니다. –

+0

에 대한 파이썬 코드가 있습니다.이 코드는 문자 그대로 모든 유니 코드 문제를 해결할 수 있습니다. 하하 :) – lol

2

아마도 pdfminer.six를 사용할 수 있습니다. 주사위를 사용하여 설치 한 후 + 3 파이썬 2 호환성

여섯을 사용 PDFMiner의

포크 : 는 설명이다

이 pdfminer.six 설치 PIP

그것의 사용법은 pdfminer과 같습니다. 코드.

희망이 있으시면 시간을 절약 할 수 있습니다. :)

+0

이 옵션은 나를 위해 더 효과적 – Jeremy