OCR 识别老验证码,老算式验证码,集装箱号 C#/JavaScript&HTML5

作者:V君 发布于:2016-9-10 3:25 Saturday 分类:挖坑经验

最近 这些天 在负责集装箱拖运相关的项目, 

要从某些行业平台上取得集装箱信息.

要在手机网页识别集装箱号.


在运营攻关得到接口之前, 只能肮脏地模拟浏览器请求来拉取信息了,

看到上古时期的验证码当时就噗了一下然后解决掉了.

 

做法很简单:

1)先从验证码URL拉回图像数据

2)载入成GDI+对象之后做预处理

 用了AForge的灰阶滤镜, yuanbao 的降噪算法, 外加自己补刀去掉漏网的噪点

3)再塞给Tesseract就可以吃了

 

Type 1: 纯数字 -- 秒破

点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图

 

Type 2: 简单算式  -- 取到文本后用正则提取一下操作数和运算符, 也是秒破

点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图

 

Type 3: 字母和数字 这就不是很理想了, 应该是官方识别库的锅比如总是把 3 识别成 J ... 

其实可以自己训练识别库的, 但是不能花太多时间折腾了. 就让程序多重试几次吧~

点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图点击查看原图

 

这个demo的源代码已经放在SVNGit了, 写的很不严谨仅供参考...

你需要下载识别库tessdata放在bin文件夹才能使OCR组件Tesseract工作

接下来是重头戏 , 集装箱号识别.

司机端是用x信, 里面的WebView似乎不能直接访问摄像头拉取实时图像来对柜号进行扫一扫.

起初打算拍照之后上传回到服务器再慢慢OCR, 但咱却意外地发现了Tesseract的js版!

现在不支持Canvas的手机应该不多了, 手机端完成识别的话只需要往回传文本啦!

做了个经过阉割的迷你示例, 可以直接在浏览器上运行.

点击查看原图点击查看原图点击查看原图点击查看原图

 




 

 

标签: 软件开发 javascript C# 图像处理 OCR

引用地址:

发表评论:

Powered by emlog 去你妹的备案 sitemap