Python 对图片进行文字识别
HDUZN

Python 文字识别,有个OCR 库——Tesseract,看网上评论说识别出来不精准,准确率不行。还是用百度的文字识别API精准得多。使用也很简单。

一、在百度创建文字识别的应用

1.注册登录百度账号

没有账号的,就注册一下。

2.创建文字识别应用

网址:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index

  • 应用名称:自己取,比如:OCR识别;
  • 接口选择:默认已经勾选文字识别了;
  • 文字文字识别包名:不需要(默认)
  • 应用归属:个人
  • 应用描述:自己写

然后就得到了这个应用的:AppIDAPI KeySecret Key。(后面需要用到)

二、Python代码实现

1.安装百度的OCR库

1
pip install baidu-aip

这上项目在Github上地址:https://github.com/Baidu-AIP/python-sdk

这个库的目录结构:
├── aip // SDK目录
│ ├── init.py // 导出类
│ ├── base.py // aip基类
│ ├── speech.py // 语音
│ ├── face.py // 人脸
│ ├── ocr.py // OCR
│ ├── nlp.py // NLP
│ ├── kg.py // 知识图谱
│ ├── imagecensor.py // 图像审核
│ ├── imageclassify.py // 图像识别
│ └── imagesearch.py // 图像搜索
└── setup.py //setuptools安装

文字识别OCR,就用到ocr.py这个。

2.文字识别应用的文档

官网:https://ai.baidu.com/ai-doc/OCR/wkibizyjk

HTTP-SDK文档下面有分Java语言、Python语言、PHP语言、C++语言、C#语言、Node.js语言、Android SDK、IOS SDK。反正各种语言都有,这里用的是Python。

文档中 快速入门接口说明 反正都写的很清楚了,看看就会用了。

3.代码实例

主要看一下调用识别方法后,返回的示例有些什么,可以自己print出来看一下。

返回示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
HTTP/1.1 200 OK
x-bce-request-id: 73c4e74c-3101-4a00-bf44-fe246959c05e
Cache-Control: no-cache
Server: BWS
Date: Tue, 18 Oct 2016 02:21:01 GMT
Content-Type: application/json;charset=UTF-8
{
"log_id": 3523983603,
"direction": 0, //detect_direction=true时存在
"words_result_num": 2,
"words_result": [
{
"location": {
"left": 35,
"top": 53,
"width": 193,
"height": 109
},
"words": "感动",
"chars": [ //recognize_granularity=small时存在
{
"location": {
"left": 56,
"top": 65,
"width": 69,
"height": 88
},
"char": "感"
},
{
"location": {
"left": 140,
"top": 65,
"width": 70,
"height": 88
},
"char": "动"
}
]
}
...
]
}

我们需要的文字内容就在:words_result 中的 words 内容。

3-1.识别单张本地图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from aip import AipOcr

# 读取图片
def get_file_content(pic_file):
with open(pic_file, 'rb') as f:
return f.read()

# 本地单张图片文字识别
def pic_ocr(pic_file):
app_id = '2******0' # 用自己的AppID
app_key = '6************a'
secret_key = 'z************3'

client = AipOcr(app_id, app_key, secret_key)

image = get_file_content(pic_file)

# 调用 通用文字识别(高精度版),提取图片中的文字内容
text = client.basicAccurate(image)

result = text['words_result']
# print(result) # result是一个列表,每一项是一个Dictionary,key为'words'
for line in result:
print(line['words'])

# 本地单张图片文字识别
pic_ocr('ocr_test.jpg')

最后结果直接print打印出来了,如果要写入文档就自己改成写入文档的方法就行。

3-2.识别网络图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 网络图片文字识别
def url_pic_ocr(pic_url):
app_id = '2******0' # 用自己的AppID
app_key = '6************a'
secret_key = 'z************3'

client = AipOcr(app_id, app_key, secret_key)

# 调用 通用文字识别(含位置信息版),提取图片中的文字内容
text = client.generalUrl(pic_url)

result = text['words_result']
# print(result)
for line in result:
print(line['words'])

# 网络图片文字识别
url_pic_ocr(r'http://n.sinaimg.cn/henan/transform/20160114/6sMt-fxnrahr8267165.jpg')
  • 本文标题:Python 对图片进行文字识别
  • 本文作者:HDUZN
  • 创建时间:2021-03-13 17:04:00
  • 本文链接:http://hduzn.cn/2021/03/13/Python对图片进行文字识别/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论