当前位置:   article > 正文

Python_读取PDF文件文本内容_pdf = pdfdocument()

pdf = pdfdocument()

经常爬虫的小伙伴,或遇到一些PDF文件的处理,可能我们要下载这个文件,并要识别里面的文本内容,今天小汪就在这里给大家分享一下怎么识别pdf文件里面的文字;话不多说,直接上代码

 

  1. from pdfminer.converter import PDFPageAggregator
  2. from pdfminer.pdfparser import PDFParser, PDFDocument
  3. from pdfminer.layout import LTTextBoxHorizontal, LAParams
  4. from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
  5. from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
  6. def parser_pdf_file(pdf_file_path):
  7. read_pdf = open(pdf_file_path, 'rb') # 打开PDF文件。
  8. parser_pdf = PDFParser(read_pdf) # 用文件对象创建一个PDF文档分析器。
  9. pdf_document = PDFDocument(parser_pdf) # 创建一个PDF文档。
  10. parser_pdf.set_document(pdf_document)
  11. pdf_document.set_parser(parser_pdf) # 连接分析器 与文档对象。
  12. pdf_document.initialize() # 如果没有密码,就创建一个空的字符串。
  13. if not pdf_document.is_extractable: # 检测文档是否提供txt转换,不提供就忽略。
  14. raise PDFTextExtractionNotAllowed
  15. else:
  16. pdf_manager = PDFResourceManager() # 创建PDF资源管理器 来管理共享资源。
  17. pdf_laparams = LAParams() # 创建一个PDF参数分析器。
  18. pdf_device = PDFPageAggregator(pdf_manager, laparams=pdf_laparams) # 创建一个聚合器
  19. pdf_interpreter = PDFPageInterpreter(pdf_manager, pdf_device) # 创建一个PDF页面解释器对象
  20. # 循环遍历列表,每次处理一页的内容,pdf_document.get_pages()获取page列表
  21. for each_page in pdf_document.get_pages():
  22. pdf_interpreter.process_page(each_page) # 使用页面解释器来读取
  23. layout = pdf_device.get_result() # 这里layout是一个LTPage对象 里面存放着这个page解析出的各种对象 一般包括LTTexBox,LTFigure,LTImage,
  24. # LTTexBoxHorizontal等等 想要获取文本就获得对象的text属性。
  25. # print(layout)
  26. for each_info in layout:
  27. if isinstance(each_info, LTTextBoxHorizontal):
  28. results = each_info.get_text()
  29. print(results)
  30. if __name__ == '__main__':
  31. # pdf_file_path = get_pdf_file()
  32. parser_pdf_file(r'D:\6.pdf')

具体每个代表什么意思,有什么不懂的地方可以留言评论,我看到后会第一时间给大家回复的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/975439
推荐阅读
相关标签
  

闽ICP备14008679号