You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python-pytesseract处理PDF遇Unsupported image object错误的解决办法

解决Python用Tesseract处理PDF时的「Unsupported image object」错误

嘿,这个问题我碰到过好多次啦——cv2.imread()只能读取JPG、PNG这类图像格式的文件,完全没法直接处理PDF,这就是你触发TypeError: Unsupported image object的核心原因。下面给你两种靠谱的解决思路,根据你的PDF类型选就行:

方案一:把PDF转成图片后再做OCR识别(适合扫描版/图片型PDF)

如果你的PDF是扫描生成的(本质是一堆图片),那得先把每页PDF转成图片,再用Tesseract识别。推荐用pdf2image库来做转换:

步骤1:安装依赖

先装pdf2image,Mac用户还要额外装poppler(PDF转图片的底层工具):

# 安装pdf2image
pip install pdf2image

# Mac用户用Homebrew装poppler
brew install poppler

步骤2:修改后的代码

import cv2
import pytesseract
import numpy as np
from pdf2image import convert_from_path

# 把PDF转成图片列表(每页对应一张图)
pages = convert_from_path('/Users/user1/Desktop/folder1/pdf1.pdf')

# 遍历每页图片做OCR
for page_num, page in enumerate(pages, start=1):
    # 把PIL图片转成OpenCV格式(也可以直接用PIL图片给Tesseract)
    img = cv2.cvtColor(np.array(page), cv2.COLOR_RGB2BGR)
    # 直接用PIL图片的话,替换成这行:text = pytesseract.image_to_string(page)
    text = pytesseract.image_to_string(img)
    print(f"第{page_num}页文本:")
    print(text)

方案二:直接提取PDF文本(适合原生文本型PDF)

如果你的PDF是直接编辑生成的(不是扫描件),那根本不需要OCR,直接用文本提取库更快更准确,比如PyPDF2

步骤1:安装依赖

pip install PyPDF2

步骤2:提取文本的代码

from PyPDF2 import PdfReader

reader = PdfReader('/Users/user1/Desktop/folder1/pdf1.pdf')
text_content = ""
for page in reader.pages:
    text_content += page.extract_text() + "\n"

print(text_content)

这样就能完美解决你的问题啦~

内容的提问来源于stack exchange,提问作者adrCoder

火山引擎 最新活动