Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python人工智能-图像识别

python人工智能-图像识别

作者头像
先知先觉
发布于 2019-01-21 08:07:56
发布于 2019-01-21 08:07:56
3.4K00
代码可运行
举报
运行总次数:0
代码可运行

一、安装库

首先我们需要安装PIL和pytesseract库。 PIL:(Python Imaging Library)是Python平台上的图像处理标准库,功能非常强大。 pytesseract:图像识别库。

我这里使用的是python3.6,PIL不支持python3所以使用如下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pytesseract
pip install pillow

如果是python2,则在命令行执行如下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pytesseract
pip install PIL

这时候我们去运行上面的代码会发现如下错误:

错误提示的很明显: No such file or directory :”tesseract”

这是因为我们没有安装tesseract-ocr引擎

二、tesseract-ocr引擎

光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。OCR技术非常专业,一般多是印刷、打印行业的从业人员使用,可以快速的将纸质资料转换为电子资料。关于中文OCR,目前国内水平较高的有清华文通、汉王、尚书,其产品各有千秋,价格不菲。国外OCR发展较早,像一些大公司,如IBM、微软、HP等,即使没有推出单独的OCR产品,但是他们的研发团队早已掌握核心技术,将OCR功能植入了自身的软件系统。对于我们程序员来说,一般用不到那么高级的,主要在开发中能够集成基本的OCR功能就可以了。这两天我查找了很多免费OCR软件、类库,特地整理一下,今天首先来谈谈Tesseract,下一次将讨论下Onenote 2010中的OCR API实现。可以在这里查看OCR技术的发展简史。 Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。 数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。

安装tesseract-ocr引擎

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew install tesseract

然后我们通过tesseract -v看一下是否安装成成功

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tesseract 3.05.01
leptonica-1.75.0
libjpeg 9b : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11

这时候我们运行上面代码会出现乱码

这是因为tesseract默认只有语言包中没有中文包,如下图:

安装tesseract-ocr语言包

我们去GitHub下载我们需要的语言包,这里我只下载了chi_tra.traineddatachi_sim.traineddata github:tesseract-ocr/tessdata 然后放到/usr/local/Cellar/tesseract/3.05.01/share/tessdata路径下面。

可以通过tesseract --list-langs查看本地语言包:

可以通过tesseract --help-psm 查看psm

0:定向脚本监测(OSD) 1: 使用OSD自动分页 2 :自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别) 3 :全自动分页,但是没有使用OSD(默认) 4 :假设可变大小的一个文本列。 5 :假设垂直对齐文本的单个统一块。 6 :假设一个统一的文本块。 7 :将图像视为单个文本行。 8 :将图像视为单个词。 9 :将图像视为圆中的单个词。 10 :将图像视为单个字符。

为什么这里要强调语言包和psm,因为我们在使用中会用到, 比如多个语言包组合并且视为统一的文本块将使用如下参数: pytesseract.image_to_string(image,lang="chi_sim+eng",config="-psm 6") 这里我们通过+来合并使用多个语言包。

接下来我们看一下配置好一切的正确结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pytesseract
from PIL import Image

image = Image.open("../pic/c.png")
code = pytesseract.image_to_string(image,lang="chi_sim",config="-psm 6")
print(code)

此时大公告成。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年01月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
第16章 Spring Boot + Kotlin: 下一代 Java 服务端开发
2017-11-22 11:55:17.205 INFO 14721 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.2.12.Final} 2017-11-22 11:55:17.208 INFO 14721 --- [ main] org.hibernate.cfg.Environment : HHH000205: Loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=com.mysql.jdbc.Driver, hibernate.format_sql=true, hibernate.dialect=org.hibernate.dialect.MySQLDialect, hibernate.bytecode.use_reflection_optimizer=false, hibernate.max_fetch_depth=1, hibernate.connection.pool_size=1} 2017-11-22 11:55:17.261 INFO 14721 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 2017-11-22 11:55:17.449 INFO 14721 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect 2017-11-22 11:55:17.665 INFO 14721 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
一个会写诗的程序员
2018/08/17
1.2K0
第16章 Spring Boot + Kotlin: 下一代 Java 服务端开发
Spring结合Hibernate的配置方法之一:直接引用hibernate文件
Spring结合Hibernate主要有集中配置方式,分别是 1、直接引用hibernate的*.cfg.xml配置文件 一、直接饮用hibernate的*.cfg.xml配置文件 项目的包结构如下:
陈树义
2022/04/29
3920
Spring结合Hibernate的配置方法之一:直接引用hibernate文件
struts2+spring+hibernate整合步骤(1)
struts2、hibernate、spring所需jar包 struts-core-2.x.x.jar ----struts核心包 xwork-core-2.x.x.jar -----身体ruts在其撒很难过构建 ognl-2.6.x.jar ----对象导航语言 freemarker-2.3.x.jar ------struts2的ui标签的模板使用 commons-fileupload-1.2.x.jar ----文件上传组件 2.1.6版本后需加入此文件 str
Java帮帮
2018/03/15
7370
三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合
在快节奏的软件开发领域,每一个简化工作流程的机会都不容错过。想要一个无需繁琐配置、能够迅速启动的数据持久化方案吗?这篇文章将是你的首选攻略。在这里,我们将向你展示如何将 Spring Boot 的便捷性、JPA 的强大查询能力和 SQLite 的轻量级特性结合在一起,实现快速而又优雅的数据管理。
未读代码
2024/03/04
1K0
三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合
一文教会你如何在SpringBoot项目里集成Hibernate
一个老项目中使用了Hibernate,是SpringMVC项目,要把定时任务拆出来,使用SpringBoot集成Hibernate,今天整理下集成的过程。
程序员子龙
2024/01/27
8360
一文教会你如何在SpringBoot项目里集成Hibernate
Hibernate入门
Hibernate是什么     Hibernate是一个轻量级的ORMapping框架     ORMapping原理(Object Relational Mapping) ORMapping基本对
xiangzhihong
2018/02/05
7480
Hibernate入门
springboot启动失败的问题('hibernate.dialect' not set)
springboot版本是1.3.0.M1,连接的mysql版本为8,用spring-boot-starter-data-jpa操做数据库,启动springboot报错如下:
程序员欣宸
2022/05/09
1.1K0
支持JDK19虚拟线程的web框架,之一:体验
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《支持JDK19虚拟线程的web框架》系列文章链接 支持JDK19虚拟线程的web框架,之一:体验 支持JDK19虚拟线程的web框架,之二:完整开发一个支持虚拟线程的quarkus应用 支持JDK19虚拟线程的web框架,之三:观察运行中的虚拟线程 支持JDK19虚拟线程的web框架,之四:看源码,了解quarkus如何支持虚拟线程 支持JDK19虚拟线程
程序员欣宸
2022/12/02
6040
支持JDK19虚拟线程的web框架,之一:体验
H2 Database入门
H2 Database做为轻量级的内嵌数据库,功能十分强大,而且运行时只需要一个jar包即可,下表是官网的描述: 更详细的对比见官网页面: http://www.h2database.com/html
菩提树下的杨过
2018/01/19
1.3K0
H2 Database入门
spring开发_spring+hibernate
http://www.cnblogs.com/hongten/gallery/image/112469.html
Hongten
2018/09/13
5570
你该怎么做?当你发现springboot扫描controller没有生效
加上@SpringBootApplication为啥就能扫描到,其实我也不知道。那就看下这个注解到底是个啥样的奇葩,它的注解构造了解一下
lyb-geek
2018/07/26
14.4K1
性能工具之 Goreplay 安装及入门使用
只需要在生产服务器上启动一个 gor 进程,它负责所有的工作包括监听、过滤和转发。它的设计遵循 Unix 设计哲学:一切都是由管道组成的,各种输入将数据复用为输出。
高楼Zee
2021/09/02
3.7K0
性能工具之 Goreplay 安装及入门使用
SpringBoot一些配置文件
Thymeleaf # 关闭模板缓存 spring.thymeleaf.cache=false # Thymeleaf页面位置 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html MVC自定义 添加@Configuration注解 package com.example.SpringBoot.config; import org.springframework.context.annotation.Conf
SakuraTears
2022/01/13
3490
SpringBoot一些配置文件
【极光系列】springBoot集成Hibernate
直接下载可用 https://gitee.com/shawsongyue/aurora.git
夏之以寒
2024/03/04
2280
【极光系列】springBoot集成Hibernate
Spring Data Jpa初体验(内含demo)
我一直在使用Mybatis作为持久化框架,并且觉得Mybatis十分的不错,足够灵活,虽说需要自己手写sql,但是这也是我觉得的一个优点,直观并且优化方便.
呼延十
2019/07/01
9920
Spring Data Jpa初体验(内含demo)
SpringBoot2版本Caused by: java.sql.SQLSyntaxErrorException: Table 'dinner.hibernate_sequenc
1、SpringBoot2版本Caused by: java.sql.SQLSyntaxErrorException: Table 'dinner.hibernate_sequenc报错。
别先生
2019/07/10
1.5K0
struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)
本文介绍了如何使用注解简化Spring Boot+Spring MVC+Mybatis的CRUD操作,并整合了Swagger2和Redis实现接口和缓存刷新功能。同时,还通过自定义UserDetailsService实现账号信息的缓存,提高了系统的性能和用户体验。
别先生
2018/01/02
9710
struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)
从事务角度粗窥架构的可扩展性和可维护性:内容整理自java web轻量级开发面试教程
    大家多少了解过架构,也听说过使用架构后,代码和可维护性和重用性能大大提升。这里我们来通过一些关于事务的实例,来感性地体会下架构带来的在可维护性方面的便利。本文来是从 java web轻量级开发面试教程从摘录的。 1 JDBC中的事务是方法层面的         ①通过setAutoCommit,设置非自动提交。在JDBC里,一般默认是自动提交,即有任何增删改的SQL语句都会当场执行。如果大家设置了非自动提交,记得在用好事务后设置回“自动提交”。     ②在合适的地方用connection.comm
用户1153489
2018/01/12
7270
springBoot生成SQL文件-Hibernate5的SchemaUpdate实现
之前两篇介绍了使用Hibernate生成SQL全量脚本文件的方式,若需要生成增量脚本进行版本维护呢?想到的对于生成增量脚本的方案可归为:
WindCoder
2020/01/22
1K0
Springboot 系列(十)使用 Spring data jpa 访问数据库
Springboot data jpa 和 Spring jdbc 同属于 Spring开源组织,在 Spring jdbc 之后又开发了持久层框架,很明显 Spring data jpa 相对于 Spring jdbc 更加的便捷强大,不然也就没有开发的必要了。根据下面的文章开始体验下 Spring data jpa 魅力。
未读代码
2019/11/04
8190
推荐阅读
相关推荐
第16章 Spring Boot + Kotlin: 下一代 Java 服务端开发
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验