在PaddleOCR的FAQ集合中没有看到一个与PPOCRLabel相关的问题,同时这个工具发布时间也很新,2020年12月左右发布的,尝试一下新事物,但是不要抱太大的希望。
1. 安装
官方说明文档网站:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/PPOCRLabel/README_ch.md
不对安装详细过程作说明,只说遇到的两个坑
1.1 报错:ImportError: cannot import name 'inference' from 'paddle'
按照官方文档的安装一遍之后,报错:ImportError: cannot import name 'inference' from 'paddle'
,根据以下回答:
- https://github.com/PaddlePaddle/PaddleOCR/issues/1592
- paddle 下没有 inference方法
我之前用的是以前的PaddlePaddle1.8.5版本,需要升级到2.0rc1版本,代码
python -m pip install paddlepaddle==2.0.1 -i https://mirror.baidu.com/pypi/simple
1.2 OSError: [WinError 126] 找不到指定的模块。
这个错误见过很多次了,由于shapely库导致的,去这里直接下载wheel
文件手动安装。先卸载之前安装的,再安装新的就好了
2. 使用
切换到ppocrlabel文件夹中,运行
cd ./PPOCRLabel
conda activate rl37
python PPOCRLabel.py --lang ch
可以看到运行的时候,其实会下载一些之前的预训练模型。然后就可以看到界面
- 点击
自动标注
,等一会,图片界面就会出现标记框(会直接标记当前打开目录下的所有图片),右侧就会出现识别的结果和检测框位置。 - 虽然界面好像丑了点,但是效果确实8错,(๑•̀ㅂ•́)و✧,👍👍👍👍,早知道就早点用了,哈哈。
- 然后就自己手动调整不太对的框,然后重新编辑一下识别结果。
- 可以在图片所在的文件夹(不是ppocrlabel程序所在的文件夹),看到自动标注后,产生了两个文件(除了
Cache.cach
),fileState.txt
,Label.txt
文件,根据下面注意中的说明,可以知道这些文件的用途。
注意:
- PPOCRLabel不支持对中文文件名的图片进行自动标注
- PPOCRLabel以文件夹为基本标记单位,打开待标记的图片文件夹后,不会在窗口栏中显示图片,而是在点击 “选择文件夹” 之后直接将文件夹下的图片导入到程序中。
- 图片状态表示本张图片用户是否手动保存过,未手动保存过即为 “X”,手动保存过为 “√”。点击 “自动标注”按钮后,PPOCRLabel不会对状态为 “√” 的图片重新标注。
- 点击“重新识别”后,模型会对图片中的识别结果进行覆盖。因此如果在此之前手动更改过识别结果,有可能在重新识别后产生变动。
- PPOCRLabel产生的文件放置于标记图片文件夹下,包括以下几种,请勿手动更改其中内容,否则会引起程序出现异常。
另外,标注完之后,可以ctrl+S
,然后就会提示要不要报错,或者关闭程序界面的时候也会提示,也可以自己每标注完一张,点击右下角的确认
点击过确认后,这张图像在文件列表中的图像名前面的符号就会变成√(绿色的对勾)。
3. 关于标签文件
我的真实数据目前很少,只有6张图,但是每张图中的文字信息很密集,很多,所以标记文件内容也还是比较丰富,大致如下:
先是文件名称,然后是一个列表,列表中包括多个文本字典,字典的第一项是文字识别的结果(transcription),第二项是列表,矩形框四个顶点的位置,第三项是识别难度的分级结果。
所以如果单纯像进行识别任务的训练,可以在文件
→保存识别结果
,然后会提示保存到了哪里,一般是当前选定的图片目录下新建一个叫crop_img
的文件夹。
大致如下:
同时,还是在当前选定的图片目录下(不是crop_img
目录中),会新产生一个rec_gt.txt
的文件,这就是识别的标签文件,大致如下:
完全符合PaddleOCR模型训练的要求(可能文件名这些需要修改一下,直接python文件处理一下就好。)
4. 关于PPOCRLabel的主观评价
- 之前一直是使用LabelImg或者是LabelMe的,这个PPOCRLabel没有
ctrl+Z
返回上一步,也没有ctrl+Y
下一步 - 界面丑了点
- 自动识别挺好的,哈哈