一、前期准备
下载anaconda.
前往chineseocr github地址下载chineseocr项目。
根据readme 前往百度云下载模型,放入chineseocr的models文件夹。
二、环境配置
根据setup-cpu.md(我是cpu版本),配置环境。
1.添加镜像源
由于不添加源下载速度及其慢且很容易反应超时报错,所以一定要添加。
conda镜像源的添加:
这里踩坑了,当时没添加pytorch的源,导致一直下不下来torch.
1 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ |
添加torch源
1 2 3 4 5 6 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/ conda config --set show_channel_urls yes |
其他源
pip镜像源的添加:
(1)
可以参考这篇
(2)
我比较懒,直接用的
三、创建虚拟环境
1 2 | conda create -n chineseocr python=3.6.7 pip scipy numpy jupyter ipython source activate chineseocr |
创建好环境之后,就可以下载所有包了。
四、下载包
1 2 3 | pip install easydict opencv-contrib-python==4.0.0.21 Cython h5py lmdb pandas requests bs4 matplotlib lxml -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install -U pillow -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install web.py==0.40.dev0 redis pip install keras==2.1.5 tensorflow==1.8 -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
这里windows有坑:mahotas下载时报错,UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 107 应该是编码问题。
找到报错的响应文件,把相应函数加上最后一个参数即可
1 | file = pd.read_csv("/input/Aliases.csv",encoding="ISO-8859-1") |
下载pytorch:
1 | conda install pytorch-cpu torchvision-cpu |
一定要去掉-c torch!
这里也有坑,报错
importError: DLL load failed: 找不到指定的模块
这个我找了一圈,有说更新Numpy的,有说torch和python版本不对应的,但都没有解决我的问题。我用
五、运行
1 | ipython app.py 8080 |
运行成功,出来一个地址,但是此地址无法访问,查原因是因为8080已被占用。没关系,直接输入http://127.0.0.1:8080/ocr到地址栏,即可访问。
访问页面,发现显示
web\application.py"‘gbk’ codec can’t decode byte 0xa7 in position 982:
解决方法很简单:在网页所有显示报错的语句中,根据路径找到所有出错的文件:我记得有template.py,application.py,debugerror.py三个文件。
然后ctrl+f,查找所有open,在
open(sFileName,newline=’’)中,增加encoding=‘UTF-8’,如下:
open(sFileName,newline=’’,encoding=‘UTF-8’)。
注意,只要有Open函数,都加上最后这个参数!
搞定~可以上传图片进行检测了!
六、感想
一开始用的ubuntu,配置环境确实简单,没有这些坑。但是不知道为什么,上传图片进行识别时,会报错:**段错误,核心已转储。**我查了一下好像是因为内存泄露的原因,改了堆栈区大小,没啥用,至今也不知道如何解决。因此转战windows.其实总结一下,也不是特别难,报错按照错误找解决方法就行了。但是网上的解决方法鱼龙混杂,真的不知道哪个可以真正解决问题,只能碰运气一个个尝试,这个过程是很痛苦的。
期间我搞坏了ubuntu一次,win10一次,朋友跟我说,想想这些坑,都是你变强路上的垫脚石吧。顿时释然,鹿小葵加油!