我正在使用pdfminer3库从pdf中提取文本。但是它在彩色页面中的效果并不好。我尝试使用以下代码从pdf中提取文本:
from pdfminer3.layout import LAParams, LTTextBox
from pdfminer3.pdfpage import PDFPage
from pdfminer3.pdfinterp import PDFResourceManager
from pdfminer3.pdfinterp import PDFPageInterpreter
from pdfminer3.converter import PDFPageAggregator
from pdfminer3.converter import TextConverter
import io
resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle, laparams=LAParams())
page_interpreter = PDFPageInterpreter(resource_manager, converter)
with open("pdffile.pdf", 'rb') as fh:
for page in PDFPage.get_pages(fh,caching=True,check_extractable=True):
page_interpreter.process_page(page)
text = fake_file_handle.getvalue()
f1=open("pdftext.txt","w+",encoding="utf8")
for i in text:
f1.write(str(i))
# close open handles
converter.close()
fake_file_handle.close()
print(text)它仅能很好地从一些文件中提取数据。但是从有色区域提取的数据如下:
(cid:7)(cid:1)(cid:4)(cid:1)(cid:9)(cid:16)(cid:20)(cid:17)
(cid:10)(cid:15)(cid:14)(cid:1)(cid:16)(cid:20)(cid:17)
(cid:1)(cid:14)(cid:18)(cid:1)(cid:12) (cid:18)(cid:1)(cid:19)(cid:2)(cid:1)(cid:17)(cid:9)
(cid:18)(cid:20)(cid:12)(cid:19)(cid:1)(cid:14)(cid:16)(cid:20)(cid:17)这不是我的数据在pdf中的样子。这是一个简单的字母数字数据。我不知道为什么它会显示cid:,它甚至不在我的pdf文件中。
谁能告诉我如何将pdf转换成灰度pdf页面。这样我就可以使用pdfminer了。我不想把pdf转换成图像,然后转换成grascale,我已经做了,因为pytesseract不能很好地提取数据。
我也试过了pdf管道工,但它也没有给我正确的数据。或者有人能建议我从图像中提取除pytesseract以外的文本的库。
最后,我使用在线转换工具将pdf页面转换成灰度。当我试图从它中提取数据时,它给出的输出与我前面提到的输出相同。所以,我想错误在pdfminer或我的代码中。如何解决这个问题.
这是一个pdf文件,我试图从中提取文本,它给出了空白输出:Pdf文件。
发布于 2020-12-26 12:48:58
您的示例PDF只是包装了一些报纸页面的位图图像。
另一方面,从PDF中的文本绘图指令中提取文本,而不是位图图像。
要从PDF检索像这样的文本,您必须应用OCR。
https://stackoverflow.com/questions/65339414
复制相似问题