CV学习笔记(十七):Windows环境复现ChineseOCR
作者:互联网
作者:云时之间
来源:知乎
链接:https://zhuanlan.zhihu.com/p/134050443
编辑:王萌
项目地址:github.com/xiaofengShi/
为了方便下载:gitee.com/yunshizhijian
因为项目中推荐使用的环境为MAC和Linux,因此迁移到Windows上仍需要一些改动,但是在网上的资料很少,并且处理报错不够全面,踩了一路坑,因此写一篇博客记录一下。
系统要使用的环境如下:
特别建议使用虚拟环境,特别是现在tensorflow已经更新到2.0,而项目中仍在使用1.8,有很多的差别。
因为我这里使用的是CPU环境,这里仅举例CPU安装所需的库:
Python 3.6
scipy numpy jupyter ipython
opencv-contrib-python==4.0.0.21
keras==2.1.5 ,tensorflow==1.8
剩余的一些不太关键包需要啥就装啥
项目下载好后,pycharm打开,首先运行项目中的demo.py
出现没有 No module named 'lib.utils',但是我们目录中是有utils这个包的,我们需要使用Cpython来编译,打开ctpn/lib/utils/setup_cpu.py,将里面的代码全部删掉,用下面代码替换:
import os
from distutils.core import setup
from distutils.extension import Extension
from os.path import join as pjoin
import numpy as np
from Cython.Distutils import build_ext
from Cython.Build import cythonize
try:
numpy_include = np.get_include()
except AttributeError:
numpy_include = np.get_numpy_include()
setup(
ext_modules=cythonize(["bbox.pyx","cython_nms.pyx"]),)
在控制台进入到setup_cpu.py这个文件的目录,输入python setup_cpu.py build,大概率出现
这时候将替换为
setup(
ext_modules=cythonize(["bbox.pyx","cython_nms.pyx"],include_dirs=[numpy_include]),
)
继续编译,直至生成:
到下图路径下,找到这两个文件:
复制移动到:D:\chinese_ocr\ctpn\lib\utils目录下,再运行demo.py,继续报错
ModuleNotFoundError: No module named 'lib.utils'
继续修改:
分析文件路径,我们可以发现lib的文件夹是在上一层目录下的,所以这里需要对python的查找目录中加入查找路径
类似的错误:ModuleNotFoundError: No module named 'lib.fast_rcnn'。
修改如下:
继续运行demo.py,继续出现错误:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa3 in position 389: illegal multibyte sequence。
定位到config.py:更改为UTF-8编码:
再运行demo.py,还会接着报错:
ValueError: Buffer dtype mismatch, expected 'int_t' but got 'long long'
这个报错处理起来比较麻烦:
打开ctpn/ctpn/text.yml脚本,修改以下代码,即取消GPU
打开 ctpn/lib/fast_rcnn/config.py脚本,修改一下代码:
打开ctpn/lib/fast_rcnn/nms_wrapper.py ,删掉以下代码:
打开ctpn/ lib/utils/init.py,删掉以下代码
打开ctpn\lib\utils\cython_nms.pyx,更改这一行代码
这时候再运行demo.py,依旧报错,这时候再重复刚开始的操作,再去编译一下,刚才的问题解决,再运行demo.py,继续运行失败:
此时修改demo.py的文件存储路径即可,再运行:
运行成功。
标签:lib,Windows,demo,utils,py,ChineseOCR,import,CV,ctpn 来源: https://blog.51cto.com/15047484/2618829