赞
踩
这里主要用到PaddleOCR,PaddleOCR是一套丰富、领先、且实用的OCR工具库,其主要特性如下:
注意事项:PaddleOCR不支持32位的Python,因此安装过程会出现各种错误。
paddlepaddle是运行PaddleOCR库的依赖库,如果缺少这个库,使用PaddleOCR时会报错。
需要确认 Python 和 pip 是 64bit,才可以安装paddlepaddle。很遗憾,32位的Python无法使用这个库。
因此,放弃使用PaddleOCR。
pip install paddlepaddle
下载速度超慢,需要耐心等待。
也可以使用国内的镜像源进行安装,速度要快很多。
https://pypi.tuna.tsinghua.edu.cn/simple #清华
http://mirrors.aliyun.com/pypi/simple/ #阿里云
https://pypi.mirrors.ustc.edu.cn/simple/ #中国科技大学
http://pypi.hustunique.com/ #华中理工大学
http://pypi.sdutlinux.org/ #山东理工大学
http://pypi.douban.com/simple/ #豆瓣
在使用pip命令的时候,可使用 -i 参数加上更新源地址,以完成安装和更新。例如(表示更改为清华镜像更新源,不在使用官方更新源):
pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
如果pip命令出错或者版本太旧,可以尝试更新pip。
更新后的pip,命令行里的文件大小、下载速度和时间,都是用彩色字体显示,更好看了。
python -m pip install --upgrade pip
windows环境下不要直接使用pip install shapely
安装这个库,通过这种方式安装好后在实际使用中会出现:[winRrror 126] 找不到指定模块的问题。
最好直接这里下载whl文件,在本地安装。
在下载好的文件,所在的文件夹的地址栏里,输入cmd
,回车,进入到命令窗口。
然后使用 pip install XXX
命令即可本地安装。例如:
pip install Shapely-1.8.2-cp39-cp39-win32.whl
安装过程,可能会出现错误:
ERROR: Shapely-1.8.2-cp39-cp39-win32.whl is not a supported wheel on this platform.
可以使用 pip debug --verbose
命令来查看自己电脑支持的安装标签,然后修改whl文件的名字后,再重复上面的安装步骤即可。
# 原本的名字安装出现错误
pip install Shapely-1.8.2-cp38-cp38-win32.whl
# 修改文件名字后成功安装
pip install Shapely-1.8.2-cp39-cp39-win_amd64.whl
# 原因:我的电脑不支持win32标签文件
安装好前面两个库以后,就可以安装PaddleOCR了。
这里需要指定安装的版本,否则会出错。
pip install paddleocr==2.6.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple
报错如下:
Failed to build lanms-neo Polygon3
ERROR: Could not build wheels for lanms-neo, which is required to install pyproject.toml-based projects
Building wheels for collected packages: lanms-neo, Polygon3 Building wheel for lanms-neo (PEP 517) ... error ERROR: Command errored out with exit status 1: command: 'A:\PythonProgram\Anaconda\python.exe' 'A:\PythonProgram\Anaconda\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\caogu\AppData\Local\Temp\tmpigq57uv9' cwd: C:\Users\caogu\AppData\Local\Temp\pip-install-sjq2dc4v\lanms-neo_79e74858cc95414ba834bbff35d2bac9 Complete output (10 lines): running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-cpython-38 creating build\lib.win-amd64-cpython-38\lanms copying lanms\__init__.py -> build\lib.win-amd64-cpython-38\lanms running build_ext building 'lanms._C' extension error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ ---------------------------------------- ERROR: Failed building wheel for lanms-neo Building wheel for Polygon3 (setup.py) ... error ERROR: Command errored out with exit status 1: command: 'A:\PythonProgram\Anaconda\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\caogu\\AppData\\Local\\Temp\\pip-install-sjq2dc4v\\polygon3_ec6a30f73d3a49fc936f2bc3e12f5bcb\\setup.py'"'"'; __file__='"'"'C:\\Users\\caogu\\AppData\\Local\\Temp\\pip-install-sjq2dc4v\\polygon3_ec6a30f73d3a49fc936f2bc3e12f5bcb\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\caogu\AppData\Local\Temp\pip-wheel-uf9nqjw3' cwd: C:\Users\caogu\AppData\Local\Temp\pip-install-sjq2dc4v\polygon3_ec6a30f73d3a49fc936f2bc3e12f5bcb\ Complete output (14 lines): Using NumPy extension! running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-3.8 creating build\lib.win-amd64-3.8\Polygon copying Polygon\IO.py -> build\lib.win-amd64-3.8\Polygon copying Polygon\Shapes.py -> build\lib.win-amd64-3.8\Polygon copying Polygon\Utils.py -> build\lib.win-amd64-3.8\Polygon copying Polygon\__init__.py -> build\lib.win-amd64-3.8\Polygon running build_ext building 'Polygon.cPolygon' extension error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ ---------------------------------------- ERROR: Failed building wheel for Polygon3 Running setup.py clean for Polygon3 Failed to build lanms-neo Polygon3 ERROR: Could not build wheels for lanms-neo which use PEP 517 and cannot be installed directly
找了很多资料,尝试了各种方法:
vc++2022
的运行库文件都不能解决,依旧出错。
最后,下载solved_packageMissInInstalling_mu_visual_cpp_build_tools_2015_update_3_x64_dvd_dfd9a39c.iso
文件,并安装。
还是出错:
……
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for lanms-neo
Failed to build lanms-neo
ERROR: Could not build wheels for lanms-neo, which is required to install pyproject.toml-based projects
然后进到doc/doc_ch/installation.md · develop · mirrors / paddlepaddle / paddleocr · GitCode,发现可能需要安装以来的库。
进入https://gitee.com/paddlepaddle/PaddleOCR下载PaddleOCR压缩文件。
下载完成后解压缩,放到 \Anaconda\Lib\site-packages\
文件夹内。然后在解压的 PaddleOCR-release-2.6
文件内,打开cmd,安装以来的库。
# 安装依赖的库
python3 -m pip install -r requirements.txt
requirements.txt内容如下:
shapely scikit-image imgaug pyclipper lmdb tqdm numpy visualdl rapidfuzz opencv-python opencv-contrib-python cython lxml premailer openpyxl attrdict Polygon3 lanms-neo==1.0.2 PyMuPDF==1.19.0
建议使用国内的镜像源逐个安装,外国的源实在是太慢了。
安装到lanms-neo==1.0.2
这个包时,出现了上述的错误。
pip install paddleocr==2.6.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
PaddleOCR代码示例:
from paddleocr import PaddleOCR, draw_ocr # Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换 # 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。 ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory img_path = 'PaddleOCR/doc/imgs/11.jpg' result = ocr.ocr(img_path, cls=True) for line in result: print(line) # 显示结果,对结果可视化 from PIL import Image image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg')
结果是一个list,每个item包含了文本框,文字和识别置信度。
[[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]]
[[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]]
[[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]]
......
Python中有一个不错的OCR库:EasyOCR。
它可以在python中调用,用来识别图像中的文字,并输出为文本。
pip install easyocr
注意事项:PaddleOCR不支持32位的Python,因此安装过程会出现各种错误。
直接安装easyocr,发现会报错。那么先安装它的依赖库:Scipy。64位的Python安装并没有出现错误。
32位才需要单独安装,64位在pip install easyocr
命令里就安装了。
Scipy库是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
直接安装会报错,于是下载SciPy-1.8.1-cp38-cp38-win32.whl
文件,本地安装。
下载地址:Archived: Python Extension Packages for Windows - Christoph Gohlke (uci.edu)
EasyOCR的用法非常简单,分为三步:
安装好后,试着运行了一下,发现对中文的识别不是太准确。准确率比不上PaddleOCR。
# 导入easyocr import easyocr # 没有找到CUDA是因为在安装Pytorch时没有选择安装CUDA。 # 路径不能有中文,文件名称不能有中文 # 创建reader对象 # ch_sim(简体中文)、en(英文) reader = easyocr.Reader(['ch_sim','en']) # 读取图像 # img = r'L:\test\test.png' img = r'L:\test\test.bmp' # img = r'L:\Python调用大漠插件\test.png' result = reader.readtext(img) for i in result: print(i) print('——'*50)
识别的结果包含在[元组]里,元组由三部分组成:边框坐标、文本、识别概率。
runfile('L:/Python调用大漠插件/easyOCR 测试.py', wdir='L:/Python调用大漠插件') CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU. ([[29, 5], [145, 5], [145, 21], [29, 21]], 'Spyder (Pthon 3.8]', 0.71470388862037) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[11, 29], [500, 29], [500, 49], [11, 49]], '文件(月 编辑(] 查找(5) 源代码(C) 运行(R) 调试[D) 控制台(0] 项目(P) 工具C 查看0', 0.03665007207665919) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[82, 60], [180, 60], [180, 90], [82, 90]], '罔 召 v', 0.005002305188916934) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[290, 60], [428, 60], [428, 86], [290, 86]], '9 哑 C M', 0.01261425011100126) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[436, 60], [462, 60], [462, 84], [436, 84]], 'R', 0.045295749291515364) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[11, 93], [207, 93], [207, 111], [11, 111]], '工: yt1or调周用太漠插伴 :未命名2.r', 0.0019529638911147207) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[31, 115], [85, 115], [85, 133], [31, 133]], '习则试 r', 0.07507313989111337) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[110, 114], [211, 114], [211, 134], [110, 134]], '解挪窗口 天刀 e', 0.03494765837455324) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[235, 113], [307, 113], [307, 133], [235, 133]], '自动押镖: I', 0.2134713275573948) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[333, 115], [451, 115], [451, 133], [333, 133]], '天刀寻径脚本界面: n', 0.33952645549954036) ———————————————————————————————————————————————————————————————————————————————————————————————————— ([[475, 113], [500, 113], [500, 131], [475, 131]], '押镖', 0.9046226769301282) ————————————————————————————————————————————————————————————————————————————————————————————————————
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。