数据采集就怕遇到图片,只能看不能复制怎么办。手动将文字提取出来,要耗费很大的工作量。例如下图,某楼盘的一房一价表,怎么样发现单价低位的房子?光凭肉眼很难发现吧,能否让计算机进行文字的识别,然后再对这些数值型信息进行数据分析。

首先把图片中的单价提取出来,

进而生成图像:

用python就可以实现,采用现在流行的OCR图像识别。主要思路是使用机器学习模式,通过已有图片手动训练出一个图像识别模型,具体步骤如下:

一、将图片预处理,更方便计算机识别

(一)把图像灰化

使用open-cv库对图片进行处理。

使用灰化后的图片,如下图,排除干扰信息,能让识别更加稳定。

(二)把图片分割

将图片分割成小方块,一是提高识别精度,二是方便将数据储存为表格形式。可以设定好参数,根据坐标系把图片裁剪成一个个小方块,如下图,储存为jpg格式。

二、建立图像识别模型

(一)将分割好的小方块图片合并成tiff文件

下载jTessBoxEditor,打开jTessBoxEditor.jar,使用tools下的merge tiff工具,将图片合并成tiff文件。

(二)使用已有模型对tiff文件进行初识别

下载并安装tesseract,并配置好环境变量,将Tesseract-OCRtessdata的路径加入到环境变量下的path下面。Tesseract自带图像识别的模型,例如中文简体汉字识别模型chi_sim.traineddata,英文识别模型eng.traineddata,这些模型可以网上下载,放到tessdata里面即可使用。

然后进入tiff所在文件夹。在命令窗口,输入:tesseract ***.tif *** -l +++ -psm 7 batch.nochop makebox,按回车生成box文件。其中***tif的文件名,+++为要生成的traindata的文件名。

(三)使用jTessBoxEditortiffbox文件进行调整

打开jTessBoxEditor.jar,在box editor中的open按钮,打开要编辑的tif文件。编辑之后保存,生成box文件。保存在同一个文件夹里。

(四)使用tiff和box文件生成模型

在tiff和box的文件中,在命令窗口输入以下代码,最终生成模型(traindata文件)

上述脚本也可以写在bat文件中,运行脚本来生成traindata,最终仅需要将traindata复制到tessdata里面,即可使用该模型。

三、应用图像识别模型

安装完,训练完模型之后,就要在python中使用模型了。安装pytesseract,找到pytesseract.py文件,打开编辑,将其中的“tesseract_cmd = 'tesseract'”,改成tesseract的安装路径(如C:\Program Files\Tesseract-OCR\\tesseract)。

因为模型是采用灰化后的图片训练的,所以在识别时也要使用灰化。

四、优化图像识别模型

在使用中,如果有错误,可以存下来,加入训练库,优化图像识别模型。在一般是识别错误的图片,积攒一阵子后。累积做成tif文件。注意:同类错误选择几个记号了,训练库尽量小而精。

作者:杨炳,心理学者在银行写代码。

赞 赏 作 者

更多阅读

用 Python 从零开始实现简单遗传算法

5分钟掌握 Python 随机爬山算法

5分钟完全读懂关联规则挖掘算法

特别推荐

点击下方阅读原文加入社区会员

用 Python 进行 OCR 图像识别相关推荐

  1. 基于python的OCR图像识别,EasyOCR图像处理文字识别

    最近在做ocr图像识别,试过了好多种,其中EasyOCR模块还是可以满足基本的图像识别的,下面,写一写使用的方法,一是供大家参考,二也是自己做个备注笔记,另外,EasyORC是个开源的项目,免费的 1 ...

  2. 基于Python的OCR图像识别

    前言 由于目前做的项目里面有些地方的需要用到图像文字识别,因此在此总结下,以下方法适合新手 1.使用python的pytesseract库 主要是安装库,比较简单,直接使用 pip install 安 ...

  3. Python基础之图像识别

    Python基础之图像识别 文章目录 Python基础之图像识别 1. 获取屏幕截图 2. 识别图像 3. 自动点赞程序 1. 获取屏幕截图 我们控制鼠标的操作,不能盲目的进行,所以我们需要监控屏幕上 ...

  4. python学习-简单图像识别分类

    python学习-图像识别 这是我从零基础开始学习的图像识别,当然用的是容易上手的python来写,持续更新中,记录我学习python基础到图像识别应用的一步步过程和踩过的一些坑.最终实现得到自己的训 ...

  5. 使用OpenCV和Python,OCR识别数字

    使用OpenCV和Python,OCR识别数字 1. 效果图 2. 原理 2.1. 什么是七段显示器 2.2 识别数字步骤 3. 源码 参考 这篇博客将演示如何使用OpenCV和Python识别图像中 ...

  6. python如何ocr_基于Python的OCR实现示例

    摘要: 近几天在做一个东西,其中需要对图像中的文字进行识别,看了前辈们的文章,找到两个较简单的方法:使用python的pytesseract库和调用百度AI平台接口.写下这篇文章做一个比较简短的记录和 ...

  7. 用python的OCR实现自动拍照搜题--源码

    自动拍照搜题源码 说明: 因为有很多人要源码,所以还是贴一下好了 很久之前的一个小demo就是搞着玩玩的没什么技术含量,马上要毕业去工作了,现在也不想在动了. 虽然是叫"自动拍照搜题&quo ...

  8. python实现ocr

    python实现ocr 前期准备 在这个阶段主要准备整个小程序的结构,既然要实现ocr,那么输入就是一张图片,而图片这里采用屏幕截图的方式获得,输出是文字,这里采用搜狗的ocr接口,我们把截好的图片传 ...

  9. python实现ocr识别算法_基于Python的OCR实现示例

    摘要: 近几天在做一个东西,其中需要对图像中的文字进行识别,看了前辈们的文章,找到两个较简单的方法:使用python的pytesseract库和调用百度AI平台接口.写下这篇文章做一个比较简短的记录和 ...

  10. OCR图像识别技术的JAVA实现(一)

    转自:https://blog.csdn.net/weistin/article/details/78839804 OCR图像识别技术的JAVA实现 最近有个需求需要用图像识别,学习记录一下. 目前网 ...

最新文章

  1. Web漏洞扫描(三:Burp Suite的基本操作)
  2. 干货合集|如何做一名优秀架构师?进来找答案!
  3. IOS开发笔记9-C语言基础复习
  4. python网址在浏览器能打开_Python - Flask - 在默认浏览器中打开一个网页
  5. C++:类的构造函数
  6. 遍历结果集java_java – 循环遍历while循环后如何将结果集重置为第一行
  7. samba-设定文件共享
  8. Apache 与 Tomcat 整合
  9. 相当于jQuery .hide()来设置可见性:隐藏
  10. Matlab矩阵各行各列求和的不同方法
  11. python list array_Python列表list 数组array常用操作集锦【转】
  12. centos7下安装mysql5.7(rpm)
  13. win10卸载office2016提示:安装程序包的语言不受系统支持
  14. Gmail Driver:你的gmail成了你的硬盘。
  15. iec104协议java_GitHub - wsan70/IEC104_microgrid: iec104协议主站客户端程序,属于微电网管理系统一部分...
  16. workflow、BPM及EAI的区别
  17. api接口设计相关总结
  18. Mac小技巧之分屏和Dock栏
  19. Java集合(五)LinkedList底层扩容源码分析
  20. php图片地址替换,php把采集内容中图片地址下载并替换成本地地址

热门文章

  1. 云计算认证系列:CKA认证
  2. CC2530基础实验二:电源管理与睡眠定时器
  3. 15.4.1 使用CREATE OR REPLACE VIEW语句修改视图结构
  4. 计算机教案制作电子表格,制作电子表格教案
  5. python毕业论文参考文献格式_毕业论文参考文献规范格式
  6. 赢在CSDN——谈谈程序员为什么要持续学习和创作?对CSDN的期待、个人创作的规划
  7. python处理excel数据
  8. 如何带移动技术团队?
  9. 冯 • 诺依曼体系结构
  10. golang正则匹配中文字符,查询中文字符会panic退出的问题