为啥 pdf2image 给我一个空白图像文件?

Posted

技术标签:

【中文标题】为啥 pdf2image 给我一个空白图像文件?【英文标题】:Why is pdf2image giving me a blank image file?为什么 pdf2image 给我一个空白图像文件? 【发布时间】:2021-08-23 22:46:17 【问题描述】:

我尝试使用 Tesseract OCR 对多个大的 pdf 文件(约 400-600 页)执行 OCR。我不一定要从所有页面中提取文本,但我只想要几页(页码已知)。 PDF 文件似乎已经对其执行了某种 OCR,但这不是一项好工作。当我运行我在 Jupyter 中编写的这段代码时:

import pdf2image
from PIL import Image
import pytesseract
import cv2
import numpy as np

pytesseract.pytesseract.tesseract_cmd = r"C:/Program Files/Tesseract-OCR/tesseract.exe"
images = pdf2image.convert_from_path("test2.pdf", first_page=3, last_page=3, poppler_path=r"C:/Program Files/poppler-0.68.0/bin")
images[0].show()

我看到这个输出: [

输出应该是这样的:

我确实认为在 PDF 上完成的 OCR 在这里造成了一些问题。我不知道如何绕过它,有人可以帮忙吗?

我还通过手动将页面转换为图像(截图工具)来尝试 OCR,并且 OCR 引擎正常工作。我还尝试使用pdf2image.convert_from_path() 上的选项,比如没有poppler_path 选项或其他页面。我尝试阅读另一个 PDF 文件,没有在其上执行 OCR,它似乎可以工作。

【问题讨论】:

如果没有相关的 PDF,恐怕很难为您提供帮助。使用给定的代码打开一些 PDF 效果很好。 @HansHirse 是的,我知道,这是 pdf 文件的示例drive 【参考方案1】:

我遇到了同样的问题,并通过将 poppler 从版本 21.03.0 升级到 21.11.0 解决了它。

【讨论】:

【参考方案2】:

我有同样的问题。由于无法修复它,我决定使用另一个库。

在另一个 Stack Overflow post 和谷歌搜索的帮助下,我能够修改 Mohit Chandel 的函数以将 pdf(多页)转换为 jpg 格式

import ghostscript
import locale

def pdf2jpeg(pdf_input_path, jpeg_output_path):
    """
    Source: https://***.com/questions/60701262/convert-pdf-to-image-using-python, 
    https://www.kite.com/python/answers/how-to-remove-everything-after-a-character-in-a-string-in-python, 
    https://www.ghostscript.com/doc/current/Use.htm
    """
    args = ["pef2jpeg", # actual value doesn't matter
            "-dNOPAUSE",
            "-sDEVICE=jpeg",
            "-r144",
            "-sOutputFile=" + jpeg_output_path.split(".", 1)[0] + "-%d.jpg",
            pdf_input_path]

    encoding = locale.getpreferredencoding()
    args = [a.encode(encoding) for a in args]

    ghostscript.Ghostscript(*args)

【讨论】:

【参考方案3】:

源 OCR 没有任何问题, 事实上它比大多数类似的例子要好,确实这里和那里有一个小故障,但这是由于源质量,因此是可以预料的,我怀疑第二次通过会更糟。

这是突出显示 OCR 文本的来源

这是 OCR(可作为可搜索文本读取),表示为您建议您希望再次运行的图像,但您所能做的就是变得更糟,永远不会变得更好,除非您输入任何丢失的字符或格式错误。

这里是导出到写字板的文本

First Edition, 5,000 Copies, November 1972 

© The Navajivan Trust, 1972 

Principal collaborators: 
Shankar Prasada, ics (retd.) 
Special Secretary, Kashmir Affairs (1958-65) 
Chief Commissioner of Delhi (1948-54) 

B. L. Sharma 
Former Principal Information Officer, Government of India, 
Former Special Officer on Kashmir Affairs in the External Affairs 
Ministry, New Delhi, and author 

Inder Jit 
Director-Editor, India News and Feature Alliance and 
Editor, The States, New Delhi 

Trevor Drieberg 
Political Commentator and Feature Writer 
Former News Editor, The Indian Express, New Delhi 

Uggar Sain 
Former News Editor and Assistant Editor, 
The Hindustan Times, New Delhi 

Printed and Published by Shantilal Harjivan Shah 
Navajivan Press, Ahmedabad-14 

【讨论】:

以上是关于为啥 pdf2image 给我一个空白图像文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 <domain>.auth.us-east-1.amazoncognito.com 给我一个空白页?

MATLAB矩阵保存为图像问题,为啥保存图像为空白? RGB值为255。

如何在 OpenCV 中填补二进制图像中的空白?

opencv中加载掩膜为啥是灰度图

旋转图像上下文 (CGContextRotateCTM) 使其变为空白。为啥?

给我一个实例,Matlab中用imread函数读取一个图像,求详细步骤