Skip to content

设置识别范围后,怎么取消识别范围(针对使用 OCR概率输出的情况)【已解决,分享出来】 #276

@xk-mt

Description

@xk-mt

问题情况

参考文档中的”Ⅴ. 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
Image

如果为string类型请传入一段不包含空格的文本,其中的每个字符均为一个待选词 Image




我的分析,可能不太对,求大佬狂喷指正
我的分析,可能不太对,求大佬狂喷指正
我的分析,可能不太对,求大佬狂喷指正


看看代码

如果使用ocr.set_ranges('')这个函数识图去除识别范围,同时又想看全字符表的概率,那指定不行,因为ocr.set_ranges('')函数在最后会添加一个空文本到列表里面,导致识别范围不能完全为空【识别不出来的验证码就指向这个空值】,但是在ocr.classification这个函数第2663行中会去判断识别范围是否为空,就导致识别列表不为空,就无法去除识别范围


源码如下:
Image

Image
python判定:
Image



解决方法

ocr.classification这个函数第2663行中修改代码如下
if len(self.__charset_range) == 0 or self.__charset_range==['']:


代码截图如下: Image Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions