2016-07-22 2 views
0

나는 복잡한 (테이블, 그림) 및 매우 긴 pdf를 html로 변환하기 위해 pdfminer를 사용했다. 결과를 더 파싱하고 (예 : 테이블, 단락 추출 등) nltk의 문장 토크 나이저를 사용하여 추가 분석을 수행하고 싶습니다. 이 목적을 위해 텍스트 파일에 html을 저장하여 파싱을 수행하는 방법을 파악하고자합니다. 불행히도 내 코드 TXT에 HTML을 작성하지 않습니다파이썬의 텍스트 파일에 html 태그 작성

from pdfminer.pdfinterp import PDFResourceManager, 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 


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() 
    str1 = retstr.getvalue() 
    retstr.close() 
    return str1 
    with open("D:/my_new_file.txt", "wb") as fh: 
     fh.write(str1) 

게다가, 코드는 쉘에서 전체 HTML 문자열을 인쇄 : 나는 그것을 피할 수있는 방법? 사소한 오류가 아니라면

+0

감사합니다! 당신 말이 맞아요, 지금은 잘 작동합니다. – In777

답변

0

첫째,

.txt 인 쓰기는 리턴 기능 후에 발생합니다 TXT 파일 쓰기가 실행되지 않습니다!

그런 다음, 콘솔에 출력을 억제하기 위해, 단지 어떻게 당신의 루틴을 실행하기 전에 :

장 - 프랑수아 파브르 @
import sys,os 
oldstdout = sys.stdout # save to be able to restore it later 
sys.stdout = os.devnull 
관련 문제