获取图片文字

如何使用python获取图片文字呢?

关注公众号【轻松学编程】了解更多…

1、通过python的第三方库pytesseract获取

通过pip install pytesseract导入。

1.1、安装tesseract-ocr

先在官网 下载对应操作系统的tesseract-ocr ,比如我现在在windows系统下,就下载exe文件安装,可点击这里下载,下载后运行exe后选择一个目录安装,这个目录需要记住,后面中需要用到,比如我的目录为D:\ruanjian\Tesseract-OCR

1.2 下载训练好的语言包

地址 ,这里想提取图片中的中文字,于是下载chi_sim.traineddata,下载到上面安装tesseract-ocr目录中的文件夹tessdata中,如图:

1.3 代码

import pytesseract
from PIL import Image # 打开一张图片
image = Image.open(r'images\82-望岳.png')
pytesseract.pytesseract.tesseract_cmd = r'D:\ruanjian\Tesseract-OCR\tesseract.exe'
tessdata_dir_config = r'--tessdata-dir "D:\ruanjian\Tesseract-OCR\tessdata"'
# 提取中文,如果是提取英文,则先下载语言包,然后设置以下参数lang='eng'即可。
code = pytesseract.image_to_string(image, lang='chi_sim', config=tessdata_dir_config) print(code)

比如我需要提取以下图片文字:

处理结果:

这种方式优点就是可以无限次运行,只要配置好电脑环境就可以,缺点就是不能混语言。比如图片中夹杂中文与英文,提取效果就不是很好。

2、使用百度接口

先到百度智能云 创建一个应用获取APP_ID、API_KEY、SECRET_KEY

然后下载python的SDK,下载后使用pip install aip-python-sdk-2.2.15.zip安装

import base64
import requests
import time
import ast
from aip import AipOcr # https://console.bce.baidu.com/ai/#/ai/ocr/overview/index
""" 你的 APPID AK SK """
APP_ID = '你的'
API_KEY = '你的'
SECRET_KEY = '你的'
# 百度api客户端
CLIENT = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 请求头
HEADERS = {
'Content-Type': 'application/x-www-form-urlencoded'
}
# 获取令牌的url
URL = 'https://aip.baidubce.com/oauth/2.0/token'
ACCESS_TOKEN = None
# 用于记录获取令牌的开始时间
SRART_TIME = time.time() def get_file_content(filePath):
# 获取文件内容
with open(filePath, 'rb') as fp:
return fp.read() def get_access_token():
# 获取令牌
global ACCESS_TOKEN, SRART_TIME, URL
response = requests.post(URL,
{'grant_type': 'client_credentials', 'client_id': API_KEY, 'client_secret': SECRET_KEY})
ACCESS_TOKEN = ast.literal_eval(response.content.decode('utf-8'))['access_token']
SRART_TIME = time.time() def req_url(image):
# 调用百度AI接口获取图像识别后的内容,调用接口次数为每日5万次
global ACCESS_TOKEN, SRART_TIME, HEADERS if not ACCESS_TOKEN or (time.time() - SRART_TIME > 7000):
get_access_token()
response = requests.post('https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=%s' % ACCESS_TOKEN,
{'image': image}, headers=HEADERS)
return response.content.decode('utf-8') if __name__ == '__main__':
# 图片内容
image = get_file_content(r'image\望岳.png')
# 获取分析结果
ret = req_url(base64.b64encode(image).decode())
# 字符串转字典
ret = ast.literal_eval(ret)
if 'words_result' in ret:
for words in ret['words_result']:
print(words['words'])

输出:

使用场景

可以利用这些图片识别给名片分类、获取图片上的关键信息、车牌识别等。

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

156789.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtX2lzX2Rj,size_16,color_FFFFFF,t_70)

关注我,我们一起成长~~

使用AI技术获取图片文字与识别图像内容的更多相关文章

  1. 图片文字OCR识别-tesseract-ocr

    帮助文件:https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc 下载地址:https://github. ...

  2. Android图片处理:识别图像方向并显示

    在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走: 1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. ...

  3. PHP百度AI的OCR图片文字识别

    第一步可定要获取百度的三个东西 要到百度AI网站(http://ai.baidu.com/)去注册 然后获得 -const APP_ID = '请填写你的appid'; -const API_KEY ...

  4. python3 识别图片文字

    1.下载相关组件 安装:pip install Pillow 或下载:https://pypi.org/project/Pillow/5.2.0/  ,https://pypi.org/project ...

  5. JAVA的图片文字识别技术

    从2013年的记录看,JAVA中图片文字识别技术大部分采用ORC的tesseract的软件功能,后来渐渐开放了java-api调用接口. 图片文字识别技术,还是采用训练的方法.并未从根本上解决图片与文 ...

  6. 我的AI之路 —— OCR文字识别快速体验版

    OCR的全称是Optical Character Recoginition,光学字符识别技术.目前应用于各个领域方向,甚至这些应用就在我们的身边,比如身份证的识别.交通路牌的识别.车牌的自动识别等等. ...

  7. HTML5 JavaScript实现图片文字识别与提取

    8月底的时候,@阿里巴巴 推出了一款名为“拯救斯诺克”的闯关游戏,作为前端校园招聘的热身,做的相当不错,让我非常喜欢.后来又传出了一条消息,阿里推出了A-star(阿里星)计划,入职阿里的技术培训生, ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别

    Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...

  9. [C13] 应用实例:图片文字识别(Application Example: Photo OCR)

    应用实例:图片文字识别(Application Example: Photo OCR) 问题描述和流程图(Problem Description and Pipeline) 图像文字识别应用所作的事是 ...

随机推荐

  1. spring cloud gateway(三、实现限流)

    限流一般有两个实现方式,令牌桶和漏桶 金牌桶是初始化令牌(容器)的个数,通过拿走里边的令牌就能通过, 没有令牌不能报错,可以设置向容器中增加令牌的速度和最大个数 漏桶是向里边放入请求,当请求数量达到最 ...

  2. How to read h5 file by Matlab

    In matlab, one can use the following command to read h5 file data = h5read(filename,ds) data = h5rea ...

  3. 为cmd中的命令添加别名,以解决java:错误: 编码 GBK 的不可映射字符 (0xAF)

    使用sublineText3编写了java代码,通过cmd javac编译 提示 错误:编码GBK的不可映射字符 解决方法 使用javac -encoding UTF-8 Person.java 结果 ...

  4. 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符

    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...

  5. 04 Storage and Calculation C语言中的存储和计算

    文章内容来源于Programming Hub的学习记录,本人整理添加了中文翻译,如有侵权,联系本人删除 Variables C语言中的变量 Let's extend our mainfunction ...

  6. 【奇淫巧技】XSS绕过技巧

    XSS记录 1.首先是弹窗函数: alert(1) prompt(1) confirm(1)eval() 2.然后是字符的编码和浏览器的解析机制: 要讲编码绕过,首先我们要理解浏览器的解析过程,浏览器 ...

  7. C++中的In 和 Out用法

    参考:https://zhidao.baidu.com/question/541219383.html In 这是一个宏,它的实际意义就是告诉你,这个变量或参数是输入值,即你必须给这个变量填写好以后提 ...

  8. #ifndef, #define, #endif三者的作用

    #ifndef, #define, #endif 作用   #ifndef 它是if not define 的简写,是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义.文件包含.条件编译) ...

  9. 【题解】[SCOI]windy数

    Link 题目大意:求给定一个区间内满足每一位的数相差大于\(2\)且没有前导零的数的个数. \(\text{Solution:}\) 我们可以按照数位\(dp\).设状态为当前要\(dp\)第\(p ...

  10. Linux系统编程—管道

    ▋****1. 管道的概念 管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式. 1.1 管道本质 管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区, ...