使用百度文字識別API進行圖片中文字的識別


今天,為了滿足我女朋友作業的需求,我使用Python制作了一個圖片轉文字的小應用。
(當然,下面導入模塊的問題我就不多說了,是非常簡單的)

一. 申請百度通用文字識別接口。

1.先在百度AI開放平台注冊賬號(點擊這里進入百度智能雲)。一般使用百度賬號即可。
在這里插入圖片描述
2.注冊成功后登錄,在右側菜單欄中尋找文字識別功能。
在這里插入圖片描述
3.進入后創建一個新的應用,並按要求填寫好應用名稱等信息后,立即創建即可。
在這里插入圖片描述

4.創建完成后,我們可以看到應用的信息,這些信息在后續寫代碼中時至關重要的。(注意:Secret Key是不可泄露的!!!)

在這里插入圖片描述

二. 到了這一步,我們真正的進入到程序中來。

1.baidu-aip模塊安裝
在Pycharm中新建Project,在工程文件夾中新建一個py文件,命名隨意。點擊File->Setting,進入Setting。剛開始沒有baidu-aip模塊,點擊右側加號搜索baidu-aip進行安裝。

在這里插入圖片描述
在這里插入圖片描述
2.因為我們這次只測試兩張圖片,所以我們在與py文件同級下新建一個目錄images,里存放我們需要識別的所有圖片(這些圖片最好按1,2……命名,在讀入時會按數字順序一張一張掃描)。
在這里插入圖片描述
------1.jpg
在這里插入圖片描述
-----2.jpg
在這里插入圖片描述
3.首先我們先找到這些圖片所在文件夾的路徑

PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))#獲取項目根目錄
path = os.path.join(PROJECT_ROOT,"images") #文件路徑
  • 1
  • 2

4.將百度AppID, API Key, Secret Key這些關鍵信息寫入調用百度ORC接口。這里要導入我們安裝好的baidu-aip模塊了。

"""你的百度AppID, API Key, Secret Key"""
APP_ID = '16545975'
API_KEY = 'qbK2kKKtrXTo0rE1rg4M6Tl6'
SECRET_KEY = 'xxxxxxxxxxxx'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5.定義打開圖片的函數

"""打開文件,讀取圖片"""
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
  • 1
  • 2
  • 3
  • 4

6.循環讀入目錄中的每一張圖片

for r, ds, fs in os.walk(path):
     for fn in fs:
        fname = os.path.join(r, fn)
        image = get_file_content(fname)
        ret = client.basicGeneral(image)
        #print(ret)
        #print(ret['words_result'])
        for item in ret['words_result']:
            print(item['words'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.接下來我們一步一步的分析結果,首先我們調用通用文字識別,打印結果看看是什么吧!(我們只截前面一部分)

# 調用通用文字識別,圖片參數為本地圖片
ret = client.basicGeneral(image)
print(ret)
  • 1
  • 2
  • 3

在這里插入圖片描述
可以看到,結果是一個字典,我們需要的圖片內容都在關鍵字為words_result中,又可以發現,這個關鍵字的值是一個列表。我們先把這個字典中的words_result關鍵字的值取出來並打印。

print(ret['words_result'])
  • 1

在這里插入圖片描述
這樣我們就取出了這個列表,圖片中文字的內容是分段顯示的,每一段又是一個字典(在圖片中每一次換行都會形成一個字典),這就很簡單了,我們只需要把每個字典中的關鍵字word的值取出來拼接上不就是我們圖片中想要的內容了嗎?這就要借助我們的循環。

for item in ret['words_result']:
    print(item['words'])
  • 1
  • 2

在這里插入圖片描述
可以看到,輸出的格式和圖片中的格式是完全一樣的。兩張圖片的內容已經被我們全部掃描出來了。

到這里這個小應用就全部結束了,大家可以根據需要繼續完善,例如將輸出結果保存到文本文件中等等。表情包中的文字也是可以識別的哦!

今天拿着QQ文字掃描發現QQ識別率還是很高的,但是一張一張太麻煩了,我想還是讓他們自己來識別更方便。

完整代碼:

from aip import AipOcr
import os


"""你的百度AppID, API Key, Secret Key"""
APP_ID = '16545975'
API_KEY = 'qbK2kKKtrXTo0rE1rg4M6Tl6'
SECRET_KEY = 'xxxxxxxxxxx'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

"""打開文件,讀取圖片"""
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))#獲取項目根目錄
path = os.path.join(PROJECT_ROOT,"images") #文件路徑

for r, ds, fs in os.walk(path):
     for fn in fs:
        fname = os.path.join(r, fn)
        image = get_file_content(fname)
        ret = client.basicGeneral(image)
        for item in ret['words_result']:
            print(item['words'])
  • 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM