OCR 从入门到放弃

最近在爬某网站,老是蹦出来验证码,就想着找个OCR破了这个验证码,然后就开始了OCR探索之旅。

首先简单说一下什么是OCR

OCR是(Optical Character Recognition,光学字符识别)的简称,主要用途:

  1. 办公用途,用来识别图片里面的文字,可以高效率的录入图片类型文件。
  2. 识别网站验证码
  3. 详见维基百科或者百度百科

OCR识别的验证码原理

  1. 采集一批验证码,根据图片特点进行初步处理(二值化/灰度化/滤波/降噪等处理)
  2. 然后分割图片,旋转图片,模板选取,训练算法,让它更准确。
  3. 有兴趣的可以看一个Python实现的OCR识别验证码详细demo,实际操作过程挺有意思的,大家有兴趣了可以试试

    OCR识别验证码的具体操作

  4. 首先我测试了一个百度开源的Node.js实现的OCR包
    gitHub地址 https://github.com/netpi/baidu-ocr-api
    安装也很简单直接按照官方的文档安装即可
    发现百度的这个OCR包识别效果不太理想
    node_ocr.png
  5. 然后经过一番Google和小伙伴们的推荐 选择一个Google开源的tesseract这个是C++写的,直接融合到爬虫里不太方便,有外国朋友基于tesseract封装了一个Python的包pytesseract,直接开箱即用,融入爬虫程序中。
  6. 百闻不如一run
    ps(这里使用的操作系统是Ubuntu16.04;Python版本是2.7)
    直接 pip install pytesseract 然后Python图片处理要用到PIL(Python Imaging Library) pip install PIL
    原图片
    ocr.gif

    写个简单的测试demo
    code.png

    看下识别结果
    error.png

    报错了, 根据报错信息来看,是确实了什么文件,或者依赖lib
    我跟踪了pytesseract的代码,发现是少了C++提供的OCR服务,因为pytesseract是调用的tesseract(C++写的)
    然后安装tesseract sudo apt install tesseract
    再run一下代码
    pyocr_res.png

整体结果还可以(倒数第四位识别错了),再训练一下准确率就更高了。
预知后事如何,且听下回分解

本帖已被设为精华帖!
本帖由 Summer 于 7年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9

期待如何放弃 :laughing:

7年前 评论

@zhuzhichao 不言弃 不放弃

7年前 评论
suhanyujie

好像知道 结局,lz赶紧更新下一集啊~~~~

7年前 评论

python阿,可是这是php社区阿

7年前 评论

@zhangwei900808 lz是php程序员 php信徒 python打杂 :laughing:

7年前 评论
lijinma

等故事的下集。。。

7年前 评论

同样期待如何放弃

7年前 评论

楼主赶紧更新了

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!