python - 如何从 PDF 中提取文本,包括图像和文本
问题描述
我将从多个 PDF 文件中提取文本。PDF 文件包括文本和一些图像,甚至一些页面是扫描的页面(我假设扫描的页面就像图像)。我按照以下命令从 PDF 文件中提取文本。我的问题是如何使用条件编辑命令以检查每个页面是否包含任何图像,然后从图像中提取文本。如果您能帮助我,我将不胜感激。
lst_all_text = []
for foldername,subfolders,files in os.walk(r"C:/MY PATH"):
for file in files:
# open the pdf file
object = PyPDF2.PdfFileReader(os.path.join(foldername,file))
# get number of pages
NumPages = object.getNumPages()
text = ""
# extract text and do the search
for i in range(0, NumPages):
PageObj = object.getPage(i)
text += PageObj.extractText()
lst_all_text.append(text)
解决方案
我已经有一段时间没有这样做了,所以我将在这里提出我遵循的一般方法:
- 使用PyMuPDF库处理 pdf 文件,它从 PDF 文件中提取文本和图像。
- 从文件中提取文本后,将提取的图像的名称存储在一个列表中,并将图像存储在一个目录中。
- 现在,要从图像中提取文本,请使用pytesseract库。这是一个用于 OCR 的开源库。遍历列表中的图像并使用 tesseract 从图像中提取文本。
注意:我在使用 tesseract 时遇到的问题是,随着图像数量的增加,它变得非常慢。
推荐阅读
- docker - 如何从本地目录复制到名为卷的 docker 并将其挂载到 NGINX 容器上?
- ruby-on-rails - Rails:类作为哈希值?
- r - 为变量重要性和绘图实现 varImp
- flutter - 按下按钮时 Flutter DraggableScrollableSheet 未显示
- visual-studio-code - editor.wordWrap 在奇怪的位置包装文本
- r - 如何匹配模式不同的三列?
- sql - 具有 NULL 值的简单 1:1 映射表的主键?
- php - 使用 XML-RPC 将图像上传到 Odoo12
- html - 如何在 HTML 中使内部 div 元素可滚动(假设正文不是)?
- vue.js - 单个文件组件 - 在从导航栏更改值时重新安装组件