我有一些pdf文件,我想从中提取文本,我几乎使用了与之相关的所有库,如pyPDF2,pdfminer。甚至继续使用tesseract和imagemagick。 Imagemagick以转换的jpg格式使大多数pdf页面变黑,然后tesseract无法读取。
问题是,在提取文本/段落时,图书馆并没有提取整个文本/段落。例如,在某些pdf文件中,正在提取整个文本,而在其他pdf文件中,只提取整个段落中的几行。
我想知道,如果有任何其他方式通过python提取文本? 然而,当我将pdf从在线源转换为jpg时,我能够提取所有文本,然后在转换的jpg文件上使用tesseract。但是,这种方法并不可行。
答案 0 :(得分:0)
确保展平图像,将背景指定为白色,以及使用命令行文档中指定的其他协议。有很多选择可供选择。我已经找到了很好的结果,但在你的情况下可能会有所不同。
您将要检查输出,直到它看起来足够令人满意,以便OCR读取。
magick -colorspace gray filename.ppm
-density 300 -depth 8 -flatten -auto-orient -auto-level -rotate -90> output.tif
如需更多帮助,请查看here
答案 1 :(得分:0)
尝试pdfreader从PDF文档中提取文本(纯文本并包含PDF运算符)和图像(内联和XObject)
这是从所有文档页面提取以上所有内容的示例代码。
from pdfreader import SimplePDFViewer, PageDoesNotExist
fd = open(you_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)
plain_text = ""
pdf_markdown = ""
images = []
try:
while True:
viewer.render()
pdf_markdown += viewer.canvas.text_content
plain_text += "".join(viewer.canvas.strings)
images.extend(viewer.canvas.inline_images)
images.extend(viewer.canvas.images.values())
viewer.next()
except PageDoesNotExist:
pass
您可以将图像转换为PIL/Pillow对象并保存(或执行所需的任何操作)
for i, img in enumerate(images):
img.to_Pillow().save("{}.png".format(i))