【发布时间】:2021-03-23 17:09:31
【问题描述】:
我正在尝试将 pdf 转换为文本文件。问题是那些pdf包含我不关心的图像(这是我要提取的文件类型(https://www.sia.aviation-civile.gouv.fr/pub/media/store/documents/file/l/f/lf_sup_2020_213_fr.pdf)。请注意,如果我用鼠标复制/粘贴,它工作得很好(除了换行符),所以我猜这是可能的。我在网上找到的大多数答案在只有文本的虚拟 pdf 上工作得很好,但在地图上给出的结果特别糟糕。 比如这样的
from tika import parser # pip install tika
raw = parser.from_file('test2.pdf')
print(raw['content'])
很适合检索文本,但我有很多这样的垃圾:
埃里
点击率
3
CH
一个
因为地图而出现。
类似这样的东西,通过将 pdf 转换为图像然后读取图像来工作,面临同样的问题(我在 stackoverflow 上的一个非常相似的线程上找到它,但没有答案):
import pytesseract as pt
from PIL import Image
import sys
def convert(name):
pages = convert_from_path(name, dpi=200)
for idx,page in enumerate(pages):
page.save('page'+str(idx)+'.jpg', 'JPEG')
quote = Image.open('page'+str(idx)+'.jpg')
text = pt.image_to_string(quote, lang="fra")
file_ex = open('page'+str(idx)+'.text',"w")
file_ex.write(text)
file_ex.close()
if __name__ == '__main__':
convert(sys.argv[1])
最后,我尝试先删除图像,然后使用上述解决方案之一,但效果不佳:
from tika import parser # pip install tika
from PyPDF2 import PdfFileWriter, PdfFileReader
# Remove the images
inputStream = open("lf_sup_2020_213_fr.pdf", "rb")
outputStream = open("test3.pdf", "wb")
src = PdfFileReader(inputStream)
output = PdfFileWriter()
[output.addPage(src.getPage(i)) for i in range(src.getNumPages())]
output.removeImages()
output.write(outputStream)
outputStream.close()
# Read from pdf without images
raw = parser.from_file('test2.pdf')
print(raw['content'])
你知道如何解决这个问题吗?它可以是任何语言。 谢谢
【问题讨论】:
标签: pdf text converters pdftotext