ddddocr
ddddocr copied to clipboard
设置识别范围后,怎么取消识别范围(针对使用 OCR概率输出的情况)【已解决,分享出来】
问题情况
参考文档中的”Ⅴ. OCR概率输出“
通过set_ranges方法设置输出字符范围来限定返回的结果
我想使用我自定义的范围,去识别验证码并查看全字符表的概率,识别完又想使用作者的范围去识别验证码并查看全字符表的概率,但是如果使用set_ranges方法设置了识别的范围,后面又想取消识别范围使用作者的范围,目前没找到函数去除范围,下面是作者的概率输出使用说明
在使用”set_ranges“函数的时候,会分析传入参数charset_range,判断参数如果为int类型,请参考下表
| 参数值 | 意义 |
|---|---|
| 0 | 纯整数0-9 |
| 1 | 纯小写英文a-z |
| 2 | 纯大写英文A-Z |
| 3 | 小写英文a-z + 大写英文A-Z |
| 4 | 小写英文a-z + 整数0-9 |
| 5 | 大写英文A-Z + 整数0-9 |
| 6 | 小写英文a-z + 大写英文A-Z + 整数0-9 |
| 7 | 默认字符库 - 小写英文a-z - 大写英文A-Z - 整数0-9 |
| 如果为string类型请传入一段不包含空格的文本,其中的每个字符均为一个待选词 |
我的分析,可能不太对,求大佬狂喷指正
我的分析,可能不太对,求大佬狂喷指正
我的分析,可能不太对,求大佬狂喷指正
看看代码
如果使用ocr.set_ranges('')这个函数识图去除识别范围,同时又想看全字符表的概率,那指定不行,因为ocr.set_ranges('')函数在最后会添加一个空文本到列表里面,导致识别范围不能完全为空【识别不出来的验证码就指向这个空值】,但是在ocr.classification这个函数第2663行中会去判断识别范围是否为空,就导致识别列表不为空,就无法去除识别范围
源码如下:
python判定:
解决方法
在ocr.classification这个函数第2663行中修改代码如下
if len(self.__charset_range) == 0 or self.__charset_range==['']:
代码截图如下: