python通过easyocr实现中文ocr识别

参考链接

EasyOCR文字识别Python安装与使用
Easyocr:
检测部分使用了CRAFT算法,识别模型为CRNN,它由3个主要组件组成:特征提取,序列标记(LSTM)和解码(CTC)。整个深度学习过程基于Pytorch实现。

检测:CRAFT算法
识别:CNN+RNN+CTC


1 安装

直接pip install easyocr失败,不知道为啥。

于是到GitHub上下载zip文件。

把zip文件放到要放的文件夹(我放在当前python interpreter的script)里解压,在解压后的文件夹里鼠标右键+shift进入PowerShell窗口。

输入命令:Python setup.py install
中间会安装一些包,一些已有的包的版本可能跟需要的不兼容,重新下一下该库就行:
eg:torchvision 0.11.3 requires pillow!=8.3.0,>=5.3.0, but you have pillow 8.3.0 which is incompatible.
直接pip install Pillow==范围内的版本就行(我装的5.3.0)。
最后安装成功:
在这里插入图片描述
在这里插入图片描述

我感觉这个setup安装已经把相关的包(requirements.txt里的)一起安装了,不需要像参考链接那样再安装一遍,以防万一在pycharm的python package里看看是不是都在。装上的版本是:

torch 1.10.2
torchvision 0.11.3
opencv-python 4.5.4.60
scipy 1.1.0
numpy 1.18.5
Pillow 5.3.0
scikit-image 0.13.1
python-bidi 0.4.2
PyYAML 3.12

2.使用方法

直接跑下面代码(比原文多放了输出):

import easyocr
reader = easyocr.Reader(['ch_sim','en'],gpu=False) # 只需要运行一次就可以将模型加载到内存中
result = reader.readtext('chinese.jpg')
print(result)
for i in result:
    word = i[1]
    print(word)

报错

OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\Anaconda3\lib\site-packages\torch-1.10.2-py3.6-win-amd64.egg\torch\lib\asmjit.dll" or one of its dependencies.
Microsoft Visual C++ Redistributable is not installed, this may lead to the DLL load failure.

又是熟悉的oserror126,这次提示没有c++ redis,但是我分明下过,还装了两次。没办法再装一次,vc redis下载链接
装了重启run以后错误变了,变更成:

AttributeError: module 'typing' has no attribute '_SpecialForm'

查了一下这貌似是python3.6的问题csdn,建议装3.8及以上,但是我项目有的sdk必须用3.6版本,还是得想办法看看能不能装点更高级的python版本,到时候不行就切换环境,但现在重新弄环境赶不上deadline,只能先降级typing-extensions。

根据GITHUBtyping-extensions4.2.0 要求 Python >= 3.7。用typing_extensions.py 替换掉原来的文件。或者下载这个也行:不是我的,要花钱
运行后又报错:

  File "D:\Anaconda3\lib\site-packages\skimage\util\arraycrop.py", line 8, in <module>
    from numpy.lib.arraypad import _validate_lengths
ImportError: cannot import name '_validate_lengths'

参考链接完美解决ImportError: cannot import name '_validate_lengths’报错问题解决了,我的arraypad .py没有九百多行,我直接放在文末保存后重启pycharm解决这个问题。(另:在此之前也试过pip install -U scikit-image的办法,对我来说没有用)

修改arraypad .py后运行结果(这里代码没加print语句,所以没输出):
在这里插入图片描述
加了输出语句后运行栏里:

Using CPU. Note: This module is much faster with a GPU.
[([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.6629598563364745), ([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.9619014638515315), ([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9935730580773452), ([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.9999929798007293), ([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.9999620772373462), ([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.2336988002212701), ([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd。', 0.8949640237476169), ([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.5179029432256108)]
西
愚园路
东
315
309
W
Yuyuan Rd。
E

进程已结束,退出代码0

参照一下原图:
在这里插入图片描述

结果还可以,也不知道怎么就我bug这么多,明天研究一下:
1.怎么输出地好看一点
2.能不能分析视频流,直接对视频流里面的一帧做操作?
3.找下二维码识别的代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值