一个基于pytorch框架的纯净版本的OCR(OpticalCharacterRecognition,光学字符识别)技术windows本地搭建。该OCR的核心算法组成是CTPN(文字检测)+CRNN(文字识别)。 (原代码链接在文末)
环境配置
所需依赖库:
● python-3.5+
● pytorch-0.4.1+
● torchvision-0.2.1
● opencv-3.4.0.14
● numpy-1.14.3
安装方式1
以上是本次ocr技术实现所依赖的库文件,除了pytorch和torchvision不能直接pip安装的其他的都是可以直接pip安装。例如:
pip install numpy(库名)==1.14.3(版本号)
注意:pytorch 和 torchvision如果要用GPU的话都需要对应CUDA版本 , 你可以在官网上查找对应版本 pytorch的官网
安装方式2
本文提供了源代码的压缩包ocr-pytorch版.7z,其中包含了利用conda打包好的虚拟环境ocr.tar.gz。
1. 首先将在anaconda的虚拟环境安装目录中:D:\Anaconda\envs\ ,新建一个ocr名称的文件夹
2. 将ocr.tar.gz这个conda环境压缩包解压到D:\Anaconda\envs\ocr
3. 使用conda env list查看虚拟环境

预训练模型测试
上述ocr-pytorch版.7z中含有源代码,在将其解压到某个文件夹后,按下win键输入cmd调用windows终端,在终端cd D:\项目\ocr-pytorch版(这里用你自己的安装到的文件夹路径),用
conda activate ocr
demo文件夹中多张图片测试
预训练好的模型文件保存在 checkpoints文件夹下面.。执行以下命令对test_images文件夹中的图片进行测试。
python3 demo.py
在 ./test_images文件夹中的图片会被用来做文字检测&识别的测试,,最终的结果图片+文字txt会被存储在 ./test_result文件夹。
test_one单张图片测试
如果你想测试单张图片, 执行以下命令。其中的[filename]是图片的绝对路径/相对路径。
python3 test_one.py [filename]
结果示例:

训练自定义模型
该OCR训练由两部分训练模块组成:CTPN训练+CRNN训练,两个所对应的训练代码在train_code文件夹中。
CTPN训练
1. 把自定义图片数据集放入[train_img]文件夹中, 然后把自定义标签数据集放入[train_label]文件夹中.
2. 在config.py文件中icdar17_mlt_img_dir变量对应图片文件夹路径;icdar17_mlt_gt_dir对应标签文件夹路径。
3. 然后在cmd终端cd到train_code/train_ctpn文件夹下,执行下面的命令进行训练。
python3 ctpn_train.py
CRNN训练
1. 首先需要准备自己的 text-line 数据集,用一个txt文件组织数据集。 在这个txt文件中,每一行表示一个text-line图片路径和被'\t'分隔开来的图片标签。如下所示:
data_set/my_data1/0001.jpg\t37918
data_set/my_data1/0002.jpg\tHello World!
data_set/my_data1/0003.jpg\t你好
...
2. 在train_warp_ctc.py中用你自己的txt文件路径去替换下面的变量内容。
config.train_infofile = ['path_to_train_infofile1.txt','path_to_train_infofile2.txt']
config.val_infofile = 'path_to_test_infofile.txt'
3. 如果你想用 warp-ctc 作为你的损失函数,执行以下命令1;如果你想用 pytorch-ctc 作为你的损失函数, 执行这个命令2。
python3 train_warp_ctc.py # 命令1
python3 train_pytorch_ctc.py # 命令2
总结
本篇博客主要是对一个基于pytorch框架纯净版OCR技术实现的代码分享、测试&训练思路分享。欢迎大家免费使用,本文的代码分享在 百度网盘 大小是7.53GB。提取码:nrpi