【问题标题】:How to convert PDF into image readable by opencv-python?如何将 PDF 转换为 opencv-python 可读的图像?
【发布时间】:2020-05-16 06:46:55
【问题描述】:

我正在使用以下代码在图像文本上绘制矩形以匹配日期模式并使其正常工作。

import re
import cv2
import pytesseract
from PIL import Image
from pytesseract import Output

img = cv2.imread('invoice-sample.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
keys = list(d.keys())

date_pattern = '^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20)\d\d$'

n_boxes = len(d['text'])
for i in range(n_boxes):
    if int(d['conf'][i]) > 60:
        if re.match(date_pattern, d['text'][i]):
            (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
            img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow('img', img)
cv2.waitKey(0)
img.save("sample.pdf")

现在,最后我得到了一个带有匹配日期模式的矩形的 PDF。

我想将此程序扫描的 PDF 作为输入而不是上面的图像。 它应该首先将 PDF 转换为 opencv 可读的图像格式,以进行与上述相同的处理。 请帮忙。 (任何解决方法都可以。我需要一个解决方案,我可以将 PDF 转换为图像并直接使用它,而不是保存在磁盘上并从那里再次读取它们。因为我有很多 PDF 需要处理。)

【问题讨论】:

    标签: python python-imaging-library tesseract python-tesseract


    【解决方案1】:

    有一个名为 pdf2image 的库。您可以使用pip install pdf2image 安装它。然后,您可以使用以下方法将 pdf 页面转换为所需格式的图像:

    from pdf2image import convert_from_path
    
    pages = convert_from_path("pdf_file_to_convert")
    for page in pages:
        page.save("page_image.jpg", "jpg")
    

    现在您可以使用此图像来应用 opencv 函数。

    您可以使用BytesIO 来完成您的工作而无需保存文件:

    from io import BytesIO
    from PIL import Image
    
    with BytesIO() as f:
       page.save(f, format="jpg")
       f.seek(0)
       img_page = Image.open(f)
    

    【讨论】:

    • 我有大量的 PDF 和多页 PDF,所以如果我可以直接使用图像对象作为 opencv 函数的输入会更好。就我而言,保存图像并再次阅读它们需要时间和空间。请指教。
    • 我的帖子的编辑版本你可以看到你可以在哪里工作而不保存图像,它就像在内存中一样,而不是写在磁盘上。
    • Panics for me: with io.BytesIO as f: AttributeError: __enter__ 看来 BytesIO 需要在构造函数中直接输入。
    • 应该是with BytesIO() as f 而不是BytesIO,如果您在该行遇到问题,还请指定format='jpeg'
    猜你喜欢
    • 2016-09-14
    • 2014-05-21
    • 2016-07-18
    • 1970-01-01
    • 2017-07-24
    • 2018-12-06
    • 1970-01-01
    • 2020-06-27
    • 2022-06-13
    相关资源
    最近更新 更多