天天看點

base64轉圖檔_一鍵識别圖檔中的表格資料,并轉為Excel背景OCR圖檔表格轉Excel,先上效果圖TableOCRtkGo封裝使用說明完整代碼

背景

有時候我們需要将圖檔中的表格資料提取出來進行再次編輯,但一個字一個字的敲出來是件非常麻煩的事。

有沒有更好的辦法,一鍵提取圖檔中的表格資料,并轉成Excel。

這時候,就需要用到OCR 技術了。

OCR

傳統OCR (Optical Character Recognition,光學字元識别)是指電子裝置(例如掃描器或數位相機)檢查紙上列印的字元,通過檢測暗、亮的模式确定其形狀,然後用字元識别方法将形狀翻譯成計算機文字的過程;即,針對印刷體字元,采用光學的方式将紙質文檔中的文字轉換成為黑白點陣的圖像檔案,并通過識别軟體将圖像中的文字轉換成文本格式,供文字處理軟體進一步編輯加工的技術。

随着深度學習在OCR領域的成功應用,檢測圖像中的文字區域以及識别文字内容已經變得越來越成熟。

圖檔表格轉Excel,先上效果圖

base64轉圖檔_一鍵識别圖檔中的表格資料,并轉為Excel背景OCR圖檔表格轉Excel,先上效果圖TableOCRtkGo封裝使用說明完整代碼

待轉換圖檔

base64轉圖檔_一鍵識别圖檔中的表格資料,并轉為Excel背景OCR圖檔表格轉Excel,先上效果圖TableOCRtkGo封裝使用說明完整代碼

轉換後的Excel

TableOCR

本文使用騰訊的“文字識别OCR”,每月免費1千次,可以滿足大部分普通使用者的需求。

base64轉圖檔_一鍵識别圖檔中的表格資料,并轉為Excel背景OCR圖檔表格轉Excel,先上效果圖TableOCRtkGo封裝使用說明完整代碼

使用準備:

  1. 申請騰訊雲賬戶secretId,secretKey
  2. 下載下傳SDK,本文使用的是Python,可通過pip進行安裝:pip install tencentcloud-sdk-python

代碼分享:

import base64from tencentcloud.common import credentialfrom tencentcloud.common.profile.client_profile import ClientProfilefrom tencentcloud.common.profile.http_profile import HttpProfilefrom tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKExceptionfrom tencentcloud.ocr.v20181119 import ocr_client, modelsclass OCR(object):    def img_to_excel(self,             image_path,             secret_id,             secret_key):        # 執行個體化一個認證對象,入參需要傳入騰訊雲賬戶secretId,secretKey        cred = credential.Credential(            secret_id,             secret_key            )        # 執行個體化client對象        httpProfile = HttpProfile()        httpProfile.endpoint = "ocr.tencentcloudapi.com"        clientProfile = ClientProfile()        clientProfile.httpProfile = httpProfile        clientProfile.signMethod = "TC3-HMAC-SHA256"        client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)        # 執行個體化一個請求對象        req = models.GeneralFastOCRRequest()                # 讀取圖檔資料,使用Base64編碼        with open(image_path, 'rb') as f:            image = f.read()            image_base64 = str(base64.b64encode(image), encoding='utf-8')        req.ImageBase64 = image_base64        # 通過client對象調用通路接口,傳入請求對象        resp = client.TableOCR(req)        # 擷取傳回資料(Data為Base64編碼後的Excel資料)        data = resp.Data        # 轉換為Excel        path_excel = image_path + ".xlsx"        with open(path_excel, 'wb') as f:            f.write(base64.b64decode(data))        return path_excel
           

tkGo封裝

import osfrom menu.menu import EMenufrom utils.img.ocr import OCRfrom utils.clipboard.clipboard import Clipboardclass MenuImg(EMenu):    LABEL_NAME = "Img"    LABEL_IMG_TO_EXCEL = "IMG to Excel"        def __init__(self, master=None, cnf={}, **kw):        super().__init__(master=master, cnf=cnf, **kw)        # 添加主菜單        master.add_cascade(label=self.LABEL_NAME, menu=self)        # 添加子菜單-圖檔表格資料轉Excel        self.add_command(              label=self.LABEL_IMG_TO_EXCEL,             command=self.img_to_excel            )        @EMenu.thread_run(LABEL_IMG_TO_EXCEL)    def img_to_excel(self):        # 擷取圖檔檔案路徑        data_type, data_content = Clipboard.get_data()        if data_type != Clipboard.DATA_TYPE_FILE:            self.msg_box_err("請先複制圖檔檔案", )            return        # 使用ocr進行轉換        ocr = OCR()        for file in data_content:            path_excel = ocr.img_to_excel(                image_path=file,                secret_id=self.conf.api.TC_OCR_SECRET_ID,                secret_key=self.conf.api.TC_OCR_SECRET_KEY                )            self.msg_box_info("轉換成功:" + path_excel)
           

使用說明

步驟1:複制圖檔檔案

步驟2:選擇Img菜單下的IMG to Excel子菜單

base64轉圖檔_一鍵識别圖檔中的表格資料,并轉為Excel背景OCR圖檔表格轉Excel,先上效果圖TableOCRtkGo封裝使用說明完整代碼

步驟3:轉換成功

base64轉圖檔_一鍵識别圖檔中的表格資料,并轉為Excel背景OCR圖檔表格轉Excel,先上效果圖TableOCRtkGo封裝使用說明完整代碼

完整代碼

GitHub上搜尋TheUncleWhoGrowsBeans

繼續閱讀