Skip to content

scscms/OCR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tsseract文字识别shine

前言

Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。 数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生–2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对 Tesseract进行改进、消除Bug、优化工作。

Windows环境安装tesseract-ocr 4.00并配置环境变量

  • 下载地址:tesseract-ocr-setup-4.00.00dev安装文件

  • 安装:直接运行tesseract-ocr-setup-4.00.00dev.exe文件,下一步、同意协议下一步、所有用户使用下一步、安装。

  • 选择语言:默认只有英文字体。选择所有字体安装有1G多,也没必要。所以我们只新增简体繁体中文。

image image

安装过程中会自动下载字体,可能会有点慢(视网络情况)。所以特别注意不要安装一些无需的字体!

  • 配置环境变量:因为我们需要命令式执行文件,所以安装好后需要配置环境变量。在我的电脑上右键选择“属性-->高级属性设置-->环境变量”,给系统变量Path追加;C:\Program Files (x86)\Tesseract-OCR(根据你的安装目录相应变化)。同时在系统变量下面新建一个变量TESSDATA_PREFIX,其值一样为C:\Program Files (x86)\Tesseract-OCR配置好了点击保存,并重启电脑。

    TESSDATA_PREFIX变量是解决跨盘读取字库问题。如果没有新建将不能在其他盘调用字库。

  • 测试安装:打开CMD命令终端,输入:tesseract -v 可以看到版本信息说明安装成功。 image

  • 识别图片:识别图片命令tesseract 图片名称 生成结果的文件名称 -l 字体库,如:

tesseract img/txt.png result -l chi_sim --psm 6

不出意外的话就会得到一个含有结果的result.txt文件。

文字识别应用:破解验证码

废话少说,让程序自动识别验证码可用于自动登录。在此我准备了一张真实网站上的验证码

image

此验证码可以变色,所以我截图了好几个。让我们尝试一下:

tesseract img/code.jpg result -l chi_sim --psm 6

破解为少 85237581 40可见这结果并不理想。

在此我们故意仍使用中文字体破解,如果使用英文字体破解效果会稍好。

其实也不难理解,因为彩色图片识别度不高。如果我们对图片先去色,并调整阈值为130再去识别效果就会好很多。

image

分别为:原图、去色、阈值130的效果。

测试代码test.js

当然,你肯定会说:“那总不能让程序自己搞PS软件去处理阈值呀!”。是的,所以我们要再安装一个自动处理图片的工具GraphicsMagick

GraphicsMagick安装

GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。

GraphicsMagick里面含有各种系统的下载文件,而我使用的是window64位版本其文件只有4.26M。安装过程很简单,直接下一步、下一步即可。安装完后同样设置一下系统变量为新增;C:\Program Files\GraphicsMagick-1.3.28-Q8(根据你的安装目录相应变化),并重启电脑。

  • 测试安装

在CMD命令里输入gm回车,如果能看到以下信息表示安装成功:

GraphicsMagick 1.3.28 2018-01-20 Q8 http://www.GraphicsMagick.org/
Copyright (C) 2002-2018 GraphicsMagick Group.
Additional copyrights and licenses apply to this software.
See http://www.GraphicsMagick.org/www/Copyright.html for details.
Usage: gm command [options ...]

Where commands include:
      batch - issue multiple commands in interactive or batch mode
  benchmark - benchmark one of the other commands
    compare - compare two images
  composite - composite images together
    conjure - execute a Magick Scripting Language (MSL) XML script
    convert - convert an image or sequence of images
       help - obtain usage message for named command
   identify - describe an image or image sequence
    mogrify - transform an image or sequence of images
    montage - create a composite image (in a grid) from separate images
       time - time one of the other commands
    version - obtain release version
   register - register this application as the source of messages

扩展:更多gm介绍看官方文档。

  • 编写执行脚本

参见:index.js

  • 查看效果
node index

查看控制台是否正常把验证码打印出来?

验证码安全对策

  • 增加验证码复杂度,比如镂空字体,复杂的干扰线条等;
  • 语音验证码:随机生成的验证码使用语音读出。缺点:应用阻力比较大,不是所有电脑都有声音,和兼容性问题大。
let speech = new SpeechSynthesisUtterance();
speech.text = '验证码:23abc';
speech.lang = 'zh-CN';
speechSynthesis.speak(speech);
  • 滑块验证:目前比较流行的拖动向右滑动滑块填充拼图。缺点:就是过分依赖第三方网站,同时也不是完全安全可靠。

  • 手机验证码:把验证码发到手机里。缺点:成本比较高,容易被刷爆。

About

利用tesseract-ocr,GraphicsMagick进行图片文本识别

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published