使用腾讯云 Cloud studio 实现调度百度AI实现文字识别

前言

今天我们也来高大上一下,玩一把人工智能。那就是免费调用百度AI实现图片上面的文字识别。相对于Python的第三方库,百度人工智能要更强大,毕竟人工智能不是那么容易搞的。要调用,其实很简单,关键的代码只需要三行。但需要先注册百度AI,获得ID和密钥。注册也很简单,百度AI社区有详细说明,高铁直达链接:https://ai.baidu.com/forum/topic/show/867951 。只需走到“1.6 获取密钥”即可。然后记录下自己的APP_ID、API_KEYSECRET_KEY,就可以开始了。界面如下。每个ID每天可免费识别200次,请珍惜使用哈。

代码说明如下:

导入模块

代码语言:javascript
复制
from aip import AipOcr #导入AipOcr模块,用于做文字识别
import glob

该部分代码导入了AipOcr模块和glob模块。

设置百度AI的APP_ID、API_KEY和SECRET_KEY

代码语言:javascript
复制
APP_ID = '你申请的'
API_KEY = '你申请的'
SECRET_KEY = '你申请的'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

这段代码设置了百度AI的APP_ID、API_KEY和SECRET_KEY,并使用这些参数创建了一个AipOcr对象。

定义路径和文件列表

代码语言:javascript
复制
path = "红楼梦\\"
files = glob.glob(path+"*.png")

这部分代码定义了一个路径path和一个文件列表files,通过使用glob.glob函数来获取指定路径下所有的.png文件。

打开文本文件准备写入数据

代码语言:javascript
复制
txt_file = open('红楼梦.txt', 'a')

该部分代码打开一个名为红楼梦.txt的文本文件,以追加(‘a’)的方式打开。

逐个处理图片文件

代码语言:javascript
复制
for file in files:
    pic = open(file,'rb')#以二进制(rb)打开
    img = pic.read() #读取
    message = client.basicGeneral(img) #调用百度AI识别图片中的文字
    for words in message['words_result']:
        word = words['words'] #提取文字
        print(word)
    txt_file.write(word) #将文字写入文本文件</code></pre></div></div><p>这部分代码使用<code>for</code>循环逐个处理<code>files</code>中的图片文件。首先打开图片文件,以二进制读取模式(‘rb’)打开,并读取图片内容。然后调用<code>client.basicGeneral</code>方法,将图片内容传递给百度AI进行文字识别,返回的结果保存在<code>message</code>中。接着使用<code>for</code>循环遍历<code>message[&#39;words_result&#39;]</code>中的每个元素,提取出其中的文字信息并保存在<code>word</code>变量中。然后将文字写入文本文件<code>txt_file</code>中。</p><h4 id="5o8mn" name="%E5%85%B3%E9%97%AD%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6">关闭文本文件</h4><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0">txt_file.close()</code></pre></div></div><p>关闭文本文件。</p><h4 id="brr3g" name="%E9%87%8D%E5%A4%8D%E5%A4%84%E7%90%86%E5%85%B6%E4%BB%96%E5%9B%BE%E7%89%87%E6%96%87%E4%BB%B6">重复处理其他图片文件</h4><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0">path = &#34;论文\\&#34;

files = glob.glob(path+"*.png")

txt_file = open('论文1.txt', 'a')

for file in files:
pic = open(file,'rb')
img = pic.read()
message = client.basicGeneral(img)
for words in message['words_result']:
word = words['words']
print(word)

    txt_file.write(word)

txt_file.close()

这部分代码与前面类似,只是处理的图片路径和文本文件名称不同。同样使用glob.glob函数获取指定路径下的所有.png文件,并逐个对其进行文字识别,并将识别结果保存到文本文件中。最后关闭文本文件。

完整代码

下面是整理后的代码,并对其进行讲解说明:

代码语言:javascript
复制
from aip import AipOcr
import glob

导入AipOcr模块,用于做文字识别

导入glob模块,用于获取文件列表

APP_ID = '你申请的'
API_KEY = '你申请的'
SECRET_KEY = '你申请的'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

设置百度AI的APP_ID、API_KEY和SECRET_KEY,并创建AipOcr对象

path = "红楼梦\"
files = glob.glob(path + "*.png")

txt_file = open('红楼梦.txt', 'a')

定义路径和文件列表,打开一个红楼梦.txt的文本文件以追加的方式

for file in files:
pic = open(file, 'rb')
img = pic.read()
message = client.basicGeneral(img)

# 逐个处理图片文件,打开图片文件,读取图片内容
# 调用百度AI的basicGeneral方法,将图片内容传递给百度AI进行文字识别

for words in message[&#39;words_result&#39;]:
    word = words[&#39;words&#39;]
    print(word)
    txt_file.write(word)
    
    # 遍历识别结果中的每个文字,提取出文字并打印
    # 将文字写入文本文件

txt_file.close()

关闭文本文件

path = "论文\"
files = glob.glob(path + "*.png")

txt_file = open('论文1.txt', 'a')

重新定义路径和文件列表,打开一个论文1.txt的文本文件以追加的方式

for file in files:
pic = open(file, 'rb')
img = pic.read()
message = client.basicGeneral(img)

# 逐个处理图片文件,打开图片文件,读取图片内容
# 调用百度AI的basicGeneral方法,将图片内容传递给百度AI进行文字识别

for words in message[&#39;words_result&#39;]:
    word = words[&#39;words&#39;]
    print(word)
    txt_file.write(word)
    
    # 遍历识别结果中的每个文字,提取出文字并打印
    # 将文字写入文本文件

txt_file.close()

关闭文本文件

解释说明
  • 导入AipOcr模块和glob模块,前者用于调用百度AI的文字识别功能,后者用于获取指定路径下的图片文件列表。
  • 根据实际申请的百度AI账号,设置了APP_IDAPI_KEYSECRET_KEY,并使用这些参数创建了一个AipOcr对象。
  • 定义了两个路径变量path,分别对应红楼梦和论文的文件夹路径。使用glob.glob函数获取指定路径下的所有.png文件,并保存到files列表中。
  • 打开一个相应的文本文件以追加的方式,用于保存文字识别的结果。
  • 通过循环遍历处理每个图片文件。首先打开图片文件,并读取其内容。然后调用client.basicGeneral方法,将图片内容传递给百度AI进行文字识别。返回的结果保存在message中。
  • 使用for循环遍历message['words_result']中的每个元素,提取出其中的文字信息并保存在word变量中。然后将文字打印出来,并写入文本文件中。
  • 关闭文本文件。

这段代码的核心功能是通过百度AI的文字识别功能对指定路径下的图片文件进行文字识别,并将识别结果保存到相应的文本文件中。可以根据实际情况,修改路径、文件名和文件格式等参数,适用于其他图片文件的文字识别任务。

运行效果