pdfminer3k - pdf2txt.py错误

时间:2017-07-04 12:17:43

标签: pdf pdfminer

我想将我的pdf文件转换为txt文件并使用pdfminer3k模块&但是,pdf2txt.py,我收到了一个错误。

pdf2txt.py -o file.txt -t tag file.pdf

这是我在cmd屏幕上的代码。

追踪(最近一次通话):   文件“C:\ Python36 \ lib \ site.py”,第67行,in     进口口   文件“C:\ Python36 \ lib \ os.py”,第409行     来自步行的收益(new_path,topdown,onerror,followlinks)              ^ SyntaxError:语法无效

这是我收到的错误消息。 你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

添加参考:大资源:

http://www.degeneratestate.org/posts/2016/Jun/15/extracting-tabular-data-from-pdfs/

-t标志是输出的类型。选项包括text,tag,xml和html。 Tag指的是为xml生成标记。在命令中用标记替换标记并尝试。

可选输入的顺序也很重要。

您还必须调用python,您的命令行确实不知道导入的含义,但您的某些环境似乎已经设置好了。我的例子是来自Anaconda3 \ Scripts目录的windows cmd。如果您使用juptyer笔记本或控制台,则应该可以使用.py

运行import pdf2txt。

要设置您的环境,您需要附加os.path.append(yourpdfdirectory),否则将找不到file.pdf。

尝试python pdf2txt.py -t text -o file.txt file.pdf

或者如果你很勇敢......这是以编程方式进行的。 xml的问题在于如果要获取文本,xml树中的每个字符都以任意顺序返回。你可以让它工作,但你需要按字符构建字符串,这不是那么难,它只是逻辑上耗时。

fp = open(filesin,'rb')
    parser = PDFParser(fp)
    doc = PDFDocument()
    parser.set_document(doc)
    doc.set_parser(parser)
    doc.initialize('')

    rsrcmgr = PDFResourceManager(caching=False)

    laparams = LAParams(all_texts=True)
    laparams.boxes_flow = -0.2
    laparams.paragraph_indent = 0.2
    laparams.detect_vertical = False
    #laparams.heuristic_word_margin = 0.03
    laparams.word_margin = 0.2
    laparams.line_margin = 0.3


    outfp = open(filesin+".out.tag" ,'wb')
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)


    #process_pdf(rsrcmgr, device, pdfparse, pagenos,caching=c, check_extractable=True)

    for p,page in enumerate(doc.get_pages()):
        if p == 0: #temporary for page 1
            interpreter.process_page(page)
            layout = device.get_result()
            alltextinbox = ''

            #This is a rich environment so categorization of this object hierarchy is needed
            for c,lt_obj in enumerate(layout):

                #print(type(lt_obj),"This is type ",c,"th object on the ",p,"th page")        
                if isinstance(lt_obj,LTTextBoxHorizontal) or isinstance(lt_obj,LTTextBox) or isinstance(lt_obj,LTTextLine):
                    print("Type ,",type(lt_obj)," and text ..",lt_obj.get_text())

                    obj_textbox_line.update({lt_obj:lt_obj.get_text()})

        elif p != 0:
            pass         
    fp.close() 
    #print(obj_textbox_line)
    #call the column finder here



#check_matching("example", "example1")
    #text_doc_df = pd.DataFrame(obj_textbox_line,columns=['text'])
    #print (text_doc_df)             
pass

我正在使用通用行/列匹配器。如果你不想打扰,你可以购买这个软件150美元,用于专业转换器。