用它实现了 发票查验验证码 98%识别率

国税发票查验的验证码识别率垄断了2年,目前识别率97.5%,从未被超越,不过近日来差距缩小了,原本市面上除了我这里,平均在70-80左右的识别率。

测试接口



识别速度如上图所示5毫秒左右,机器配置如下图:

可见,低配1核CPU足以支撑业务日调用1.7千万级别的负载调用,加之识别率一直是全网最高,业内不少头部的财税服务提供商都是使用笔者的版本,因保密协议不得透露合作关系,在此不举例,毕竟大多数公司都会说自己并非使用爬虫技术实现查验功能,行内人应该都知道的,可自行查证。敢在合同上写下识别率指标的不存在一丝丝水分。

测试地址:http://152.136.207.29:19812/preview?model_name=TAX

使用方法本篇博客就不赘述了,从官网保存验证码原图,选择需要识别的颜色,上传图片识别即可。

本接口防止白嫖设立了一定的风控,如有商业合作意愿可联系本人QQ(27009583)或合伙人QQ(1095085167),获取文本接口测试。


2020/12/29


有人一直拿一张“我加他好友的截图”说我不讲武德,因为一张截图上下文不全,我这里做一下补充,时间我忘了还是比较早的,当时他识别率有90%左右,我出于以下两点考虑:

  1. 对他的努力成果表示认可,认为他能达到 90%识别率 很不容易,因为我之前公开的生成器是有所保留的,直接生成设置了只能有30%左右识别率。
  2. 担心他90%识别率定价过低,比如1k,那么客户对我这边97.5%识别率版本的8w的报价有心理落差,7.5%的价值跨度太大。

以上本来没有什么,但是对方处于何种目的,通过了截图中所有人的申请,唯独不通过我的 ,我们理解为 拒绝沟通 甚至对方对我的申请怀有一种敌意。态度是:存在竞争关系——不能容忍我的存在——所以拒绝同意。

所以这就是对方一直表达的,我文章被举报之后第一时间认为是他的原因之一,他的态度很明显表达了不能容忍我的存在,并且存在希望我消失的动机。
还有一个原因:知乎事件 ,对于知乎的规则我是清楚的:

  1. 没人举报系统不会自行下架。
  2. 我被举报之后,某人的评论就在下面了,关联到某人的博客,存在利益关系。

有充分的动机和理由,更加证实了我原本的看法。

我很反感对方这张截图有这么一个原因:
对方用一张截图,并不说明上下文,意在错误引导,我列举几个例子容大家细细品味:

  1. 单纯的申请好友可以解释为关注,在意。而在特定的语境下,可以任意的操控关注的方向,制造虚假因果,比如对方可以巧妙的运用这张截图来暗示 “申请者 担心 被申请者 取代其地位” 构建虚假竞争关系,提升到与申请者同一个高度。
  2. 对于截图中模糊不具体的陈述,借助自身的语境描述,可以把对90%识别率认可的本意,替换认可97%识别率。

我不喜欢别人打着我的幌子,对方难道就剩下这唯一的能拿来证明自己价值的图了吗?我不做评论。

2020/12/28

事情是这样的,12.28我的文章突然被告知涉嫌推广,被下架。


image.png

然后某某把的文章也被删了,并发出这么一段话:


image.png

针对以上,我做出以下回应:

  1. 我没举报他,12.27我还在考试,要说我考完了确实有时间举报,我是28号被举报的,我怀疑在对方文章被下架之后,认为是我干的,然后举报的,时间顺序吻合。毕竟一篇一年多的文章不会无缘无故重审被下架,当初能通过,突然就不通过了。难道审核机制双标,我是信任CSDN的。我特地去咨询了一下客服,对方已经得知自己被封的真相,还跟小孩子一样纠缠,我也懒得比比了,对方的意图就很明显了,不过是找一个借口来引起关注。事实也证明了小号的成本很低,违规被封换一个就行了。
    image.png
  1. 我一直好奇为什么对方不用真实的QQ,而是为了卖国税验证码而注册的一个全新的QQ。难道是大号有污点或存在交易争议?还是以前的QQ暴露了自己是易语言玩家的痕迹?所谓的“潘多拉效应”,越隐藏自己越让人好奇,到底为什么不敢用,我不做推测,我建议对方用真实的QQ可以提高成功率,只有真诚才能被信任。 ,换位思考,我要是买家,要给一个小号打几万是不可能的。所以我一般会建议买家这么做:
    1)当面交易。
    2)确认对方真实个人信息并且签合同
    3)把识别率指标作为合同的交付指标,达不到须全额退还。
    对方如果能接受不回避并且真实做到这些,各位可以放心交易,因为原则上吃不了亏。

  2. 对方说,他对我造成威胁了。就因为我向他发起过好友申请,就说明我认为他是威胁,我陈述过原因,这里不存在因果,对方过于刻板印象了,其实应该是对方把我当作威胁,这里不赘述了,所谓的威胁:比如我97.5的版本定位在8w,对方90的版本定位在1k。确实会对我造成威胁。本来井水不犯河水的,不过我现在是放心了,既然认定我有暴利收入起码不会傻到定位1k了。

  3. 说我心虚?有点意思,看看对方对于识别率的态度:
    知乎事件的时候,识别率是这样的,说自己有98%

    image.png

几个小时前,说的自己有97的识别率

image.png

然后现在单独删了,可信度到底多少?什么叫心虚?这才叫。

  1. 别的不说,颜色处理方案事实用的我的方案,在我没有公布之前,市面上可没有一个人用,方案都采纳了,对方说生成器没抄全自己写,又在旧版的有我生成器的开源项目里评论,会有人信吗?我信了。

根据和客户交易的经验,总结下面几点建议(核心):

  1. 当面交易:
    1)在对方电脑里看到源码;
    2)现场对接官网核实识别率;
    3)看着源码从他的设备转移到你的设备上,并且成功运行起来。
  1. 合同约束,在合同上注明验收指标,以我为例:


    image.png

    image.png
image.png

我一般都会写的很清楚,总结为:如果识别率达不到验收指标必须全额退款。

  1. 对于小号而言,最好接受第一条建议 ,防止跑路。远程交易必须添加微信或者有年限和等级正常有使用痕迹的QQ,微信的朋友圈起码是超过其意图开始(打算卖模型)的年限的,能客观观察到对方是个真实的存在,信息暴露越少越不真实,毕竟万一被骗,这是能报警维权唯一的手段,诉讼文书才能知道该寄给谁。

综合以上,如果对方能接受以上全部要求,恭喜你们,不会花冤枉钱,我十分赞成你们交易,如果以各种理由回避或拒绝暴露真实的自己,建议大家要小心了。还有很重要的一个途径,岁月的痕迹不会骗人,看看项目开发的历史进程和发展轨迹:


image.png

去年我在云栖社区也做过技术分享直播,都有痕迹可以查的。

发票查验服务

https://inv.gouzai.pw/

image.png

提供全票种秒查询的服务,查验服务若有商业合作可以联系我的合伙人。可为高端用户提供毫秒级的查验效率,快至200毫秒以内(光这个200基本上没有对手,需要联系合伙人QQ:1095085167,才提供测试)可高速并发(依赖高质代理IP),搭配97.5%识别率验证码识别服务,
连续查验失败的概率低至10亿分之9,可以说失败率为0,大型银行年查验数大约千万量级,换算一下大约100年中将发生9次查验失败。稳定性不用多说,实力在这里,放马过来测试比对。


image.png

目标客户:大型财税公司首选,或者想一跃成为行业头部的公司首选,可直接对标市面上的任何一家公司的查验服务,言尽于此。不喜犹豫不决拖拖拉拉的客户,加了好友不回消息的直接拉黑,屌丝勿扰。

7.14 更新

很多人一直有一个误区,想靠这篇生成的算法自行生成,然后指望能训练出和我一样98%识别率的模型,这里奉劝各位,不要白费力气,这篇文章充满了暗示意味,是一篇钓鱼文章,旨在给各位制造失望和疑惑,等各位无计可施之后萌生找我购买成品的想法。
这就是为什么只给各位一个残卷,高手可以自行脑补出整个秘籍,新手拿到他毫无用处,不做任何改动,照着生成的话,应该只能有30-40的识别率,当当玩具是可以,商用还差点意思。

另一个CSDN博主的Python版本生成器比我这个还不像,不信的各位可以看看踩过坑的朋友。
https://blog.csdn.net/zzhang_12/article/details/107079463

image.png

千万不要以为真的有人做慈善,我的简书发布的版本生成出来起码和官网有八分相似,大概能直接训练出个30左右识别率,当然了自己用的版本随意生成就能训练到95识别率,毕竟要恰饭,公开肯定是不可能公开的,两个版本相比,关键点算法都不一样,经过我精准挖坑和魔改,达到肉眼无法感知但是对机器而言差异极大,识别率不会因为修正一两个算法而超越40这条线。

在这里向大家坦白,是的,我简直坏透了,为了恰饭竟然浪费各位的感情。各位也不要过于绝望,其实它是可以给你们灵感的,如果能从这个版本改出95识别率的,我是真心祝贺,不过目前为止还没遇到,可能这种技能真的是太过偏门了。

然后有人一直寻找所谓的颜色置换算法,这里我引用CSDN一篇文章的算法:

# 蓝色转红色
# img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  # 蓝色R、G值较小,B值独大,B、G交换,接近红色分布

# 黑色转红色
# img[:, :, 2] = 255 - img[:, :, 2]  # 黑色三个通道都比较小, 用255-R通道,则R通道独大,其余通道小,接近红色的分布

# 黄色转红色
# img = cv2.bitwise_not(img)  # 黄色R、G值较大,B值较小,先取反,则R、G值较小, B值独大,接近蓝色分布
# img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  # 与蓝色转红色相同
————————————————
版权声明:本文为CSDN博主「okfu_DL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

开门见山,效果图:


WXWorkCapture_15449403943731.png

这款验证码的来源是有位朋友发我一张图片,让我用算法生成长得一样的图片,于是它就诞生了,或许它是全网唯一的吧,后来才知道他是国税验证码。这套源码用Java写的,不需要其他依赖,很好编译。截图就是生成出来的效果,提供了根据颜色标注的需求,代码末尾处,可以轻松设定想要生成的颜色标注,生成个数等等,希望本文能对大家有所帮助。另外偶然之间我也看到另一个博主写了Python版的生成 https://blog.csdn.net/okfu_DL/article/details/105293284。不过大家最关心的应该是如何使用这套源码实现最终的识别,笔者将在后面为大家详细道明。

outputImage(w, h, "D:/TrainSet/java_captcha_3_Red", verifyCode, Color.RED, needCode);

英文数字的字体为:Action Jackson,虽然我查了字体供应商页面都已经不存在,设计师估计也不是AOL的会员了,但笔者比较怂,为了避免不可预见的侵权风险,这里没有提供下载,请各位自行下载,本文仅提供研究学习,禁止用于商业用途。

识别思路

首先有几条道路可以通向罗马,这里不分先后优劣一一讲述。

  1. 颜色提取的思路,可以采用HSV/K-means聚类进行颜色的分离提取:效果如下:
    1.png

弊端显而易见,会有较大的特征丢失,识别率有较大的提升瓶颈,经过测试,中英文+汉字的识别率在90%左右。

  1. 不分离颜色的思路,该方案有两种处理方法:
    (1)同时预测颜色和字符内容,这种方法看起来比较正统,但是成本较高,需要标注每张图的颜色字符内容,这个要求有多高呢,一般的打码平台是无法提供这样的结果的,打码平台只返回对应颜色的内容,只能人工标注,那么需要多少样本呢?笔者训练的识别率98的模型用了100w左右的样本。一张这样的样本标注假设需要0.1元,那么100w样本需要10w标注费用,假设0.01元,也要1w的标注费用。但是验证码高质量的人工标注几乎是不存在的,因为很多样本,人眼的识别率是不如机器的,总体标注的准确率大概也只能在85左右。看起来并不可取,有一种节约成本的办法,可以通过算法生成样本,但是呢,生成的识别率英文数字还可以,中文的识别率就低的可怜了。附上生成方法:https://www.jianshu.com/p/da1b972e24f2
    (2)每个颜色分别训练一个模型, 这种方法看起来有点蠢,但是确实比较合适有效的办法了,可以轻松借助打码平台的返回结果标注样本。需要的颜色可以通过官网提供的字段取到,返回结果通过打码平台识别得到,这样一组合,样本就有了。这种方法的成本相对较低,样本数不变的前提下,打码价格低于人工标注的成本。但是笔者训练的是一种颜色的样本用了100w。每个颜色分别训练这样成本还是下不来。四种颜色就是500w样本。官网的每次获取图片的时候颜色随机出现的概率也不一定是1/4。
    2.png

(3)把所有颜色都通过颜色变换为一种颜色,整体思路同(2)。如下图,笔者将黑色转换为红色。我们只需要训练红色的图片:蓝转红、黄转红、黑转红,样本成本只有采集一种颜色的成本。看起来是目前位置最佳的方案了,事实也是如此的。但是呢,100w的样本对于普通人来说也是一笔不小的花销,即便有了样本能做出来也需要花费不少的时间和精力。

有些算法工作者可能会低估样本的实际需求量,3.6k分类,中文字体小,容易混淆相似的字多,不同的角度重叠干扰都会大大增加,过于复杂的网络对性能的要求也高,为了平衡性能和准确率,足够数量的样本支撑是必须的,100w样本量其实不大,一点都不要惊讶

不过采集样本不是单纯的接打码平台就完事了,需要经过官网判断,只有通过验证,正确的样本才保存下来。这样有效的样本对提高识别率才有帮助。


3.png

实验成果

image.png

image.png

笔者实时对接官网对实验模型进行检验,结果如上图,测试了200+次,识别率达到98%以上,识别速度的话,CPU本地识别一次大概5-8毫秒左右,(腾讯云1核1G低配机器约10ms-15ms)模型大小约3mb。

针对有些白嫖党老是把别人的试用额度给占满了,给白嫖提升一点小难度,欢迎闯关。

测试

大多大朋友门还是喜欢往接口里怼一些奇奇怪怪的东西,为了给不会调用接口的小白更好的明白这个接口是怎么一回事,更新了一个简陋的操作界面

再次声明: 我一直强调要【原图】,不要【截图】,【模拟浏览器选手】请你们【放弃】,速度【慢】,只有人工打码平台支持你们的截图识别,本接口针对【企业用户】,连【右键-另存为图片】都不会的请在家长的陪同下使用。

**1.本地提交一张【90x35】大小的图片;

  1. 选择需要识别的【颜色】;
  2. 点击【提交】即可;**

注意: 截图原图天差地别,总有人顽固而偏执的以为看起来没什么区别,这就体现了脑子和读书的重要性,不会获取原图的大师兄请点击右上方/左上方关闭按钮。

测试地址:
http://152.136.207.29:19812/preview


请勿 使用 模拟浏览器截图 获取,如果不知道如何使用协议获取验证码,可以参考这个文章的方法:
https://blog.csdn.net/kerlomz/article/details/106793781
若对最新的JS逆向感兴趣可以关注作者。

若以上方法都不清楚,可以【另存为图片】,本模型针对【原图】训练。
截图无法识别,不理解的可以先了解下深度学习 图像识别原理 ,或咨询 作者


训练使用100w样本,请勿用于商业用途,如果各位对深度学习、OCR感兴趣的,可以加QQ群(857149419)交流,欢迎大家一起学习和成长。

此生成器仅供参考只有30-40识别率,请勿支付下载,当前模型97.5识别率如有需要请联系作者QQ:27009583:

还有 0% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥2000.00 继续阅读

推荐阅读更多精彩内容