You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PaddleOCR读取内存中PIL转ndarray图像的报错问题?

解决PaddleOCR无法识别内存中PIL图像的问题

问题根源

你遇到的ValueError: operands could not be broadcast together with shapes (960,960,4) (1,1,3),本质是输入图像为4通道RGBA格式(带透明度通道),但PaddleOCR只支持3通道的RGB图像,导致预处理时数组运算不兼容。这是因为ImageGrab.grab()在macOS下默认返回带alpha通道的图像。

修复方法

把RGBA图像转成RGB格式就行,两种简单方式任选:

方式一:通过PIL直接转换

获取图像后先调用convert('RGB')再转numpy数组:

from paddleocr import PaddleOCR
from PIL import ImageGrab
import numpy as np

ocr_model = PaddleOCR(lang="en")
# 先转RGB格式再转数组
pic = np.array(ImageGrab.grab(bbox=[0, 0, 1000, 1000]).convert('RGB'))
result = ocr_model.ocr(pic)

print(result)

方式二:用numpy切片去除alpha通道

如果已经拿到RGBA的numpy数组,直接截取前3个通道:

# 从RGBA数组中提取RGB部分
pic_rgb = pic[..., :3]
result = ocr_model.ocr(pic_rgb)

效果验证

两种方法都能将4通道图像转为符合PaddleOCR要求的3通道RGB格式,彻底解决数组广播的报错问题。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:45:14