三十行代码教你做个通用文字识别程序

三十行代码教你做个通用文字识别程序

准备

在开始敲代码前,我们先做一些准备。我们的这个通用文字识别程序的原理很简单,就是通过API调用百度智能云提供的免费的通用文字识别(标准版)。
如果你没有相关账号的话,下面是教你怎么注册,如果有,请忽略:
首先访问AI Studio并注册相关账号
在这里插入图片描述
然后点击菜单栏的“更多”——“文档”:

在这里插入图片描述
接下来点击右上角的“控制台”:
在这里插入图片描述
左边的菜单来有“文字识别”,点击:
在这里插入图片描述
我这里已经创建了应用,如果没有的话,是会显示已建应用0个,接下来就是创建应用:
在这里插入图片描述
选择个人就好,名字、简介也随意,其余默认就好,创建好后,我们可以进入管理应用:
可以看到应用的API Key和Secret Key,待会会用到:
在这里插入图片描述
好了,准备过程到这里就结束了,我们开始上代码。

开始编程

先上代码:

# encoding:utf-8

import requests
import base64

'''
通用文字识别
'''
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=SPfIteu7L3vVVjfCHHUekVkK&client_secret=HZs1UKLggufge2aKaPGNHeSt5u7F4Hoq'
response = requests.get(host)
if response:
    access_token = response.json()['access_token']

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
# 二进制方式打开图片文件
f = open('C:\\Users\\沧海云帆\\Desktop\\13.jpg', 'rb')
img = base64.b64encode(f.read())

params = {
    
    "image":img}
request_url = request_url + "?access_token=" + access_token
headers = {
    
    'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
    words = response.json()['words_result']
    print ("图像文字识别结果:")
    for word in words:
        print(word['words'],end='')

先看前面一部分:

import requests 

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:
    print(response.json())

前面创建应用得到的AK,SK,填入host变量里,这样做的主要目的是获得access_token,这个是必须要的参数,后面会用到,包含在返回的response.json()的’access_token’中。
第二部分:

import requests
import base64

'''
通用文字识别
'''

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
# 二进制方式打开图片文件
f = open('[本地文件]', 'rb')
img = base64.b64encode(f.read())

params = {
    
    "image":img}
access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
headers = {
    
    'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
    print (response.json())

这一部分没什么好讲的,就把自己的图片文件填进去,获得的鉴权填进去,然后就可以点击运行了,

{
    
    
    "log_id": 2471272194, 
    "words_result_num": 2,
    "words_result": 
	    [
		    {
    
    "words": " TSINGTAO"}, 
		    {
    
    "words": "青島睥酒"}
	    ]
}

这是返回的json文件的样例,识别出的文字就在“words_result”下,所以我们可以简单修饰一下,毕竟我们只需要识别出的文字。

测试

代码写好了,我们来测试一下,就随便从网上截个图吧,图片最好是.jpg格式:
在这里插入图片描述
运行代码看看:
在这里插入图片描述
文字:
捧碎瓷,落地有声,掌心有痕。时光远去,爱的碎瓷,光亮依旧,却带着某种惆怅的,点点落寞,爱的不死守望,爱的不老葱茏。相遇红尘,情缘深深,曾经几何?跌入爱的深谷,如今看透,爱也让人蹉
跎,愿化身成蝶,只为坚守一份不老情歌。—题记

总的来说还是不错的,当然毕竟是免费的,有些文字的识别还是有问题的,当然也可能是我的截图不太清晰的问题。

猜你喜欢

转载自blog.csdn.net/qq_44725872/article/details/109386651