python+百度API識別圖片中表格並保存到excel


簡介

以圖片形式的EXCEL表格為例,信息讀取我們使用百度文字識別OCR來實現,百度接口提供了免費額度,基本滿足日常使用,下面來具體看一下如何使用百度Excel識別。

准備工作

baidu-aip 安裝

Python 版的 SDK 安裝很簡單

pip install baidu-aip

注冊百度AI開放平台

創建應用需要一個百度或百度雲賬號,注冊登錄地址為:https://login.bce.baidu.com/

登錄后將鼠標移到登錄頭像位置,在彈出菜單中點擊用戶中心

如圖所示:

進入需選一下相應信息,如圖所示:

選完之后點保存即可。

接着將鼠標移到左側>符號位置,再選人工智能,點擊文字識別,如圖所示:

點擊之后會進到如下所示圖中:

現在,我們就可以點擊創建應用了,之后進到如下所示圖中:

從上圖中我們可以看出百度文字識別OCR能夠識別的信息類別非常多,也就是說不只是識別表格。

如果你有其他信息識別的需求也是可以通過它來快速實現的。

這里我們填一下應用名稱應用描述,填完之后點立即創建即可。

創建完成后返回應用列表,如下圖所示:

記下一下AppID&API Key&Secret Key這三個值,調用接口時使用。

代碼實現

原始圖片

處理后圖片

導入所需模塊

# 圖片識別
from aip import AipOcr
# 時間模塊
import time
# 網頁獲取
import requests 
# 操作系統接口模塊
import os

為了能夠對圖片進行批量處理,定義get_image(image_path)函數獲取對應文件夾中所有圖片。

# 獲取文件夾中所有圖片
def get_image(image_path):
    images=[] # 存儲文件夾內所有文件的路徑(包括子目錄內的文件)
    for root, dirs, files in os.walk(work_path):
        path = [os.path.join(root, name) for name in files]
        images.extend(path)
    return images

定義Image_Excel(APP_ID,API_KEY,SECRET_KEY)函數,獲取圖片中表格

def Image_Excel(APP_ID,API_KEY,SECRET_KEY):
   #  調用百度AI接口
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 循環遍歷文件家中圖片
    images=get_image(image_path)
    for image in images:
    	# 以二進制方式打開圖片
             img_open=open(image,'rb')
            # 讀取圖片
            img_read = img_open.read()
            # 調用表格識別模塊識別圖片
            table = client.tableRecognitionAsync(img_read)  
            # 獲取請求ID
            request_id = table['result'][0]['request_id']
            #獲取表格處理結果
             result = client.getTableRecognitionResult(request_id)  
             # 處理狀態是“已完成”,獲取下載地址
             while result['result']['ret_msg'] != '已完成':  
                time.sleep(2)  # 暫停2秒再刷新
                result = client.getTableRecognitionResult(request_id)  
            download_url = result['result']['result_data']
            print(download_url)
            # 獲取表格數據
            excel_data = requests.get(download_url)
             # 根據圖片名字命名表格名稱
            xlsx_name = image.split(".")[0] + ".xlsx"  
            # 新建excel文件
            xlsx = open(xlsx_name, 'wb')  
            # 將數據寫入excel文件並保存
            xlsx.write(excel_data.content) 

主函數定義

if __name__=='__main__':
    image_path = input('請輸入圖片所在文件夾路徑:')
    APP_ID=input('APP_ID:')
    API_KEY=input('API_KEY:')
    SECRET_KEY=input('SECRET_KEY')
    Image_Excel(APP_ID,API_KEY,SECRET_KEY)

總結

到此這篇關於Python調用百度AI實現圖片表格識別功能的文章就介紹到這了,更多實用小工具請關注公眾號【紫電的學習筆記

注意

在開始前,需要檢查圖片的大小,必須在1K~4M之間,不然會報錯“‘error_msg': ‘image size error, image is too big or too small, upper limit 4M, lower limit 1k, please check your param'”。

圖片的清晰度會對識別結果產生影響

完整代碼

# 圖片識別
from aip import AipOcr
# 時間模塊
import time
# 網頁獲取
import requests 
# 操作系統接口模塊
import os
image_path=''
# 獲取文件夾中所有圖片

def get_image():
    images=[] # 存儲文件夾內所有文件的路徑(包括子目錄內的文件)
    for root, dirs, files in os.walk(image_path):
        path = [os.path.join(root, name) for name in files]
        images.extend(path)
    return images

def Image_Excel(APP_ID,API_KEY,SECRET_KEY):
   #  調用百度AI接口
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 循環遍歷文件家中圖片
    images=get_image()
    for image in images:
    	# 以二進制方式打開圖片
        img_open=open(image,'rb')
        # 讀取圖片
        img_read = img_open.read()
        # 調用表格識別模塊識別圖片
        table = client.tableRecognitionAsync(img_read)
        # 獲取請求ID
        request_id = table['result'][0]['request_id']
        #獲取表格處理結果
        result = client.getTableRecognitionResult(request_id)
         # 處理狀態是“已完成”,獲取下載地址
        while result['result']['ret_msg'] != '已完成':
            time.sleep(2)  # 暫停2秒再刷新
            result = client.getTableRecognitionResult(request_id)
        download_url = result['result']['result_data']
        print(download_url)
        # 獲取表格數據
        excel_data = requests.get(download_url)
         # 根據圖片名字命名表格名稱
        xlsx_name = image.split(".")[0] + ".xls"
        # 新建excel文件
        xlsx = open(xlsx_name, 'wb')
        # 將數據寫入excel文件並保存
        xlsx.write(excel_data.content)

if __name__=='__main__':
    image_path = input('請輸入圖片所在文件夾路徑:')
    APP_ID=input('APP_ID:')
    API_KEY=input('API_KEY:')
    SECRET_KEY=input('SECRET_KEY:')
    Image_Excel(APP_ID,API_KEY,SECRET_KEY)


免責聲明!

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



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