鱼C论坛

 找回密码
 立即注册
查看: 1844|回复: 5

[已解决]关于pytesserac文字识别遇到的困难

[复制链接]
发表于 2023-9-2 18:17:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下
import pytesseract
from PIL import Image
import numpy as np
im = Image.open('下载.png')
result = pytesseract.image_to_string(im)
print(result)
print(np.array(im).shape)
print(im.mode)
im = im.convert('L')
threshold = 80
array = np.array(im)
array = np.where(array > threshold, 255, 0)
image = Image.fromarray(array.astype('uint8'))
result = pytesseract.image_to_string(image)
print(result)
运行后:
a 63F.
(38, 112, 4)
RGBA
为什么处理过的图片就无法识别出文本呢?
我用调试模式输出result = pytesseract.image_to_string(image)后显示pytesseract.pytesseract.TesseractError: (1, 'Error, cannot read input file C:\\pythonProject1: Permission denied Error during processing.')
百度也没找到答案,问了gpt了也没办法,想问问论坛的大佬有没有办法?万分感谢!

最佳答案
2023-9-2 18:18:18
问题的原因是在将图像转换为灰度图像后,使用了阈值处理来二值化图像。然而,在二值化过程中,将所有大于阈值的像素值设置为255(白色),小于阈值的像素值设置为0(黑色)。这样处理后的图像可能会丢失一些细节信息,导致文字识别失败。

为了解决这个问题,你可以尝试以下几个方法:

1. 调整阈值:尝试使用不同的阈值来进行图像二值化处理。通过适当调整阈值,可以保留更多的细节信息,提高文字识别的准确性。

2. 图像预处理:在进行文字识别之前,可以尝试对图像进行预处理,例如去噪、平滑、增强对比度等操作。这些操作可以帮助提高文字的清晰度,从而提高文字识别的准确性。

3. 尝试其他文字识别库:除了pytesseract,还有其他一些文字识别库可供选择,例如百度OCR、阿里云OCR等。你可以尝试使用其他库来进行文字识别,看是否能够获得更好的识别结果。

希望以上方法能够帮助你解决问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-2 18:17:55 | 显示全部楼层
你遇到的问题可能是由于以下几个原因导致的:

1. 文件读取权限问题:根据错误提示,有可能是对图片文件的读取权限不足所导致的错误。请确保你正在运行代码的用户具有访问图像文件的权限。可以尝试使用绝对路径来指定图像文件的位置,并确保路径正确。

2. 图像预处理问题:在进行图像预处理时,你将图像转为灰度图,并进行了阈值处理。这些操作对于不同类型的图像和文本可能需要不同的参数调整。你可以尝试调整阈值值来查看是否能够正确提取文本。

3. Pytesseract配置问题:Pytesseract依赖于Tesseract OCR引擎,需要确保正确配置。请确认你已经正确安装了Tesseract OCR,并且Pytesseract能够找到Tesseract的安装路径。你可以尝试指定Tesseract的安装路径,例如:pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'。

如果以上方法仍然无法解决问题,可以尝试查看Pytesseract的官方文档、GitHub仓库或相关社区以获取更多帮助。你也可以在开发者论坛或者技术问答社区中提问,寻求专业开发者的帮助。

祝你好运!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-2 18:18:18 | 显示全部楼层    本楼为最佳答案   
问题的原因是在将图像转换为灰度图像后,使用了阈值处理来二值化图像。然而,在二值化过程中,将所有大于阈值的像素值设置为255(白色),小于阈值的像素值设置为0(黑色)。这样处理后的图像可能会丢失一些细节信息,导致文字识别失败。

为了解决这个问题,你可以尝试以下几个方法:

1. 调整阈值:尝试使用不同的阈值来进行图像二值化处理。通过适当调整阈值,可以保留更多的细节信息,提高文字识别的准确性。

2. 图像预处理:在进行文字识别之前,可以尝试对图像进行预处理,例如去噪、平滑、增强对比度等操作。这些操作可以帮助提高文字的清晰度,从而提高文字识别的准确性。

3. 尝试其他文字识别库:除了pytesseract,还有其他一些文字识别库可供选择,例如百度OCR、阿里云OCR等。你可以尝试使用其他库来进行文字识别,看是否能够获得更好的识别结果。

希望以上方法能够帮助你解决问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-2 18:24:06 | 显示全部楼层
isdkz 发表于 2023-9-2 18:18
问题的原因是在将图像转换为灰度图像后,使用了阈值处理来二值化图像。然而,在二值化过程中,将所有大于阈 ...

感谢大佬,我去试了试,成功了.我本来用show查看过处理的照片,感觉没啥问题,却没想到他识别不出来。就离谱,刚刚多试了几个数字就成功了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-2 18:31:32 | 显示全部楼层
陶远航 发表于 2023-9-2 18:17
你遇到的问题可能是由于以下几个原因导致的:

1. 文件读取权限问题:根据错误提示,有可能是对图片文件 ...

哈哈哈,这是不是gpt的回答?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-2 18:32:23 | 显示全部楼层
2872423252 发表于 2023-9-2 18:31
哈哈哈,这是不是gpt的回答?

哈哈哈被你发现了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表