使用 Python PyPDF2 从扫描的 pdf(图像)中提取文本

Extracting text from scanned pdf (images) using Python PyPDF2

我一直在尝试从扫描的 PDF 中提取文本(带有不可选择文本的图像)。

但是,我得到的输出不是人类可读的。

我想要 pdf 中包含 DATE、INVOICE NO 的信息 link(https://drive.google.com/file/d/1qQsqhlSKTZs-hlswrV8PIirR36896KXZ/view).

请帮助我提取并以纯文本形式存储。

import PyPDF2
from PIL import Image
pdf_reader = PyPDF2.PdfFileReader(r'document.pdf', 'rb')
page = pdf_reader.getPage(85)
if '/XObject' in page['/Resources']:
    xobject = page['/Resources']['/XObject'].getObject()
    for obj in xobject:
        if xobject[obj]['/Subtype'] == '/Image':
            size = (xobject[obj]['/Width'], xobject[obj]['/Height'])
            data = xobject[obj]._data
            print("*******", data)
            print(xobject[obj]['/Filter'])

[更新]
我不认为 PyPDF2 可以从图像中读取文本...
要将图像转换为文本,我建议使用一些 OCR 工具,例如 PyTesseract.
这是一个使用 pdf2image 和 PyTesseract 来实现您正在寻找的东西的示例(您需要首先正确安装 PyTesseract/Tesseract 和 pdf2image):

import pdf2image
import pytesseract
from pytesseract import Output, TesseractError

pdf_path = "document.pdf"

images = pdf2image.convert_from_path(pdf_path)

pil_im = images[0] # assuming that we're interested in the first page only

ocr_dict = pytesseract.image_to_data(pil_im, lang='eng', output_type=Output.DICT)
# ocr_dict now holds all the OCR info including text and location on the image

text = " ".join(ocr_dict['text'])