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

使用pytesseract读取内存图片报错:Windows文件未找到

我之前也碰到过一模一样的问题,这里有个容易被忽略的关键细节:pytesseract只是Tesseract OCR引擎的Python封装层,而Tesseract本身只能读取磁盘上的文件路径,没办法直接处理内存中的Image对象。所以哪怕你已经把图片加载到内存里,pytesseract还是会在后台悄悄把这个Image对象临时写入系统临时文件夹,再调用Tesseract去读取这个临时文件——你看到的“文件未找到”错误,大概率是这个临时文件的读写环节出了问题,或者Tesseract的路径配置没真正生效。

下面是我亲测有效的解决步骤:

1. 强制指定Tesseract的绝对路径

有时候环境变量的修改不会立刻同步到当前运行的IDE/终端(比如你改完环境变量没重启VS Code),直接在代码里硬编码路径最稳妥:

import pytesseract
from PIL import Image

# 替换成你实际的Tesseract安装路径,比如默认路径是下面这样
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

im = Image.open('你的图片路径.png')
text = pytesseract.image_to_string(im)

2. 检查系统临时目录的权限

pytesseract默认把临时图片存在C:\Users\<你的用户名>\AppData\Local\Temp,如果这个文件夹的读写权限受限(比如被安全软件拦截),就会导致临时文件创建失败或无法读取。你可以:

  • 手动打开这个临时目录,试试能不能新建/删除文件,确认权限正常
  • 或者指定一个你有权限的自定义临时目录:
import pytesseract
from PIL import Image
import tempfile

# 替换成你自己的可读写目录
custom_temp_dir = r'C:\MyTemp\OCR'
with tempfile.TemporaryDirectory(dir=custom_temp_dir) as tmpdir:
    text = pytesseract.image_to_string(im)

3. 验证Tesseract本身是否能正常运行

打开命令提示符(CMD),输入tesseract --version:

  • 如果能返回版本信息,说明环境变量是生效的
  • 如果提示“不是内部或外部命令”,要么是环境变量没配置对,要么是需要重启电脑让环境变量生效

4. 预处理图片格式

有些带Alpha通道的PNG或者特殊格式的图片,虽然能被Image.open加载,但会导致Tesseract识别失败,先转成RGB格式再试试:

im = Image.open('你的图片路径.png').convert('RGB')
text = pytesseract.image_to_string(im)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:33:52