Python构建快速高效的中文文字识别OCR

感谢李奥诃弗斯基的悉心教导完成编译部分工作,万分感谢!

本文使用开源项目chineseocr_lite,已上传百度网盘(2020/3/16),提取码:oade

以下适合Windows系统,需要使用VS进行简单编译,若用Linux系统可直接参考原项目,应该更简单。

安装

1. PyTorch

进入PyTorch官网,选择合适自己的版本。

如笔者使用pip且仅CPU环境,执行命令安装:pip install torch==1.4.0+cpu torchvision==0.5.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

2. Python库

pip install web.py==0.40.dev0

  • 1
  • 1

3. VS2015及以上

必须装上VC++模块,用于后面编译。

编译PSENET

本人编译好的pse.pyd已上传CSDN,在Win7和Win10的Python3.6版本下测试通过,需要的亲自取。

这步是重头戏

1.打开VS2015→新建项目→Visual C++→项目命名为pse

2.勾上空项目

3.配置属性(常规):右键项目pse→属性→配置Release→平台x64→目标文件扩展名.pyd→配置类型动态库(.dll)

4.配置属性(VC++目录):包含目录添加C:\chineseocr_lite-master\psenet\pse\include(项目文件)和C:\Users\Administrator\AppData\Local\Programs\Python\Python36\include(你的Python),库目录添加C:\Users\Administrator\AppData\Local\Programs\Python\Python36\libs(注意,是libs不是Lib)

5.附加依赖项:添加python3.lib;python36.lib;

4.配置管理器→活动解决方案配置Release→活动解决方案平台x64

5.把项目\psenet\pse\pse.cpp复制到源文件里→右键项目pse→重新生成

6.在VS项目pse\x64\Release就编译好了我们要的库文件pse.pyd

7.将pse.pyd复制到与项目\psenet\pse\pse.cpp同一文件夹下

运行app.py

访问http://127.0.0.1:8080/ocr

1.报错RuntimeError: Cannot compile pse: C:\chineseocr_lite-master\psenet\pse
注释掉psenet\pse\__init__.py的两行代码

2.报错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xab in position 551: illegal multibyte sequence
点进报错所在代码,添加编码, encoding='UTF-8'

3.报错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa7 in position 982: illegal multibyte sequence
同上,添加编码, encoding='UTF-8'

封装接口

原项目使用和未使用的文件较多,本人封装好了接口
GitHub自取:vba34520/chineseocr_lite: Python构建快速高效的中文文字识别OCR

调用ocr.result()即可进行文本预测

GPU版本

  1. 安装CUDA+cuDNN
  2. GPU版本PyTorch
  3. 执行命令nvidia-smi查看GPU的ID
  4. 修改config.py的GPU_ID

参考文献

  1. ouyanghuiyu/chineseocr_lite: 超轻量级中文ocr,支持竖排文字识别, 支持ncnn推理 , psenet(8.5M) + crnn(6.3M) + anglenet(1.5M) 总模型仅17M
  2. pybind/pybind11: Seamless operability between C++11 and Python
  3. 根据显卡型号选择CUDA和cuDNN进行TensorFlow GPU版本安装
  4. python如何编译py文件生成pyc、pyo、pyd以及如何和C语言结合使用
(0)

相关推荐