验证码识别方法详细揭秘0+
53,205 views / 2011.02.25 / 12:12 上午
目前各种论坛投票微博在我们发表内容时都需要输入验证码,有时候为了满足客户的特殊需求,又能节省人力,我们需要使用验证码识别功能。百度一下“验证码识别”,全是卖软件的,没有详细的技术介绍.(这就是技术人员不用百度的原因之一吧?:)。杜工对各个软件做了详细研究,发现识别的流程千篇一律。
1. 生成识别库文件。这个是验证码识别准确率的决定性步骤。要把图片经过各种滤镜祛除杂点,斜线等,然后把字符分割出来,然后挨个人工识别输入。这一步也叫做“学习”。最后等识别准确率非常高时,可发布生成一个tc文件.
2. 编程。核心思想就是有个写好的dll库,我们要用各种语言,如delphi, C#, 易语言等,把dll库和上一步生成的特征文件引进来,然后编程。下面是我写的一个delphi示例。
//加载特征库 function loadcode(a:integer;b:integer;c:string;d:string):integer;stdcall; external 'ycode.dll'; //Recognitiond function Recognitiond(a:integer;b:integer;c:integer;d:string;e:string):PChar;stdcall; external 'ycode.dll'; begin S:=Trim(ParamStr(1));//接收图片路径 if S <>'' then begin loadcode(0,0,'gou.fc','');//这是第一步生成的特征库 Writeln(Recognitiond (1,0,0,'', S));//把识别结果输出来 end else begin Writeln('false'); end { TODO -oUser -cConsole Main : Insert code here } end. |
3. 应用。第2步骤可编译生成可执行文件。如f.exe , 我们可以用php方便调用:
echo exec("f.exe C:\\images\\code.png"); |
至此,验证码识别工作完成。
Ps. NND,这个流程只能在windows环境下才能跑通,我想了各种办法想在linux下完成全过程,都不尽理想。