百度ocr的簡單封裝

百度ocr地址

以下代碼為對百度ocr的簡單封裝,實際使用時推薦使用baidu-aip

百度通用ocr

import base64
from enum import Enum, unique
import requests
import logging as log@unique
class OcrType(Enum):# 標準版STANDARD_BASIC = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"# 標準版含位置STANDARD_WITH_LOCATION = "https://aip.baidubce.com/rest/2.0/ocr/v1/general"# 高精度版ACCURATE_BASIC = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"# 高精度版含位置ACCURATE_WITH_LOCATION = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate"# 辦公文檔識別DOC_ANALYSiS_OFFICE = "https://aip.baidubce.com/rest/2.0/ocr/v1/doc_analysis_office"# 網絡圖片文字識別WEB_IMAGE = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage"# 網絡圖片文字識別 含位置WEB_IMAGE_WITH_LOCATION = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage_loc"# 手寫文字識別HAND_WRITING = "https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting"# 數字識別NUMBERS = "https://aip.baidubce.com/rest/2.0/ocr/v1/numbers"# 表格文字識別(同步接口)FORM_SYNCH = "https://aip.baidubce.com/rest/2.0/ocr/v1/form"# 表格文字識別(異步接口)FORM_ASYNCH = "https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/request"# 二維碼識別QRCORD = "https://aip.baidubce.com/rest/2.0/ocr/v1/qrcode"def ocr_help():print("==========百度ocr使用說明==========")print("本API基于ocr通用識別api編寫,官方文檔地址:https://cloud.baidu.com/doc/OCR/s/zk3h7xz52")print("使用示例:")print('''baiduOcr = BaiduGeneralOcr(OcrType.STANDARD_BASIC)baiduOcr.set_access_token("access_token")wordsList = baiduOcr.recoginze(image="D:\\txt1.png",options={})['words_result']for word in wordsList:print(word)''')class BaiduGeneralOcr():# ocr版本ocr_type = 0def __init__(self, ocr_type: OcrType):"""ocr_type ocr識別類型 STANDARD_BASIC標準版 標準版含位置STANDARD_WITH_LOCATION 高精讀版ACCURATE_BASIC 高精度版含位置ACCURATE_WITH_LOCATION@param ocr_type:"""self.options = Noneself.pdf_file = Noneself.url = Noneself.image = Noneself.access_token = Noneself.ocr_type = ocr_type.valuedef gen_access_token(self, api_key, secret_key):"""生成access_token@param api_key:@param secret_key:@return:"""request_url = f'''https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={api_key}&client_secret={secret_key}'''response = requests.get(request_url)if response:print("access_token:%s" %(response.json()['access_token']))self.access_token = response.json()['access_token']def __check(self):"""參數檢查@return:"""image = self.imageurl = self.urlpdf_file = self.pdf_fileif (image is None or image == "") and (url is None or url == "") and (pdf_file is None or pdf_file == ""):raise ValueError("image,url,pdf_file至少傳入一項")if (image is not None) and (image != ""):f = open(image, 'rb')self.options['image'] = base64.b64encode(f.read()).decode()elif (image is not None or image == "") and (url is not None and url != ""):self.options['url'] = urlelse:f = open(pdf_file, 'rb')self.options['pdf_file'] = base64.b64encode(f.read()).decode()keys = self.options.keys()if ("image" not in keys) and ("url" not in keys) and ("pdf_file" not in keys):raise ValueError("image,url,pdf_file至少傳入一項")try:self.ocr_type.valueexcept Exception as e:log.info(repr(e))self.ocr_type = OcrType.STANDARD_BASIClog.info("ocr_type類型,已重置為標準版")def __request(self, request_url, data):# 設置headerheaders = {'content-type': 'application/x-www-form-urlencoded'}# 請求print(self.options)print(headers)return requests.post(request_url + "?access_token=%s" % self.access_token, data=self.options,headers=headers).json()def recoginze(self, image: str = None, url: str = None, pdf_file: str = None, options=None):"""識別@param image:@param url:@param pdf_file:@param options:@return:"""self.image = imageself.url = urlself.pdf_file = pdf_fileself.options = options or {}self.__check()# 發送請求return self.__request(self.ocr_type.value, options)def set_access_token(self, access_token):"""設置access_token@param access_token:@return:"""self.access_token = access_token

百度卡片識別ocr

import requests
import base64
import json
from cwrpa.log.log import logging as log
from enum import Enum, unique
import keyring@unique
class OcrType(Enum):# 身份證識別ID_CARD = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard"# 身份證混貼識別MULTI_IDCARD = "https://aip.baidubce.com/rest/2.0/ocr/v1/multi_idcard"# 身份證識別(金融加密版)IDCARD_ENC = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard_enc"# 銀行卡識別BANKCARD = "https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard"# 營業執照識別BUSINESS_LICENSE = "https://aip.baidubce.com/rest/2.0/ocr/v1/business_license"# 名片識別BUSINESS_CARD = "https://aip.baidubce.com/rest/2.0/ocr/v1/business_card"# 護照識別PASSPORT = "https://aip.baidubce.com/rest/2.0/ocr/v1/passport"# 社保卡識別SOCIAL_SECURITY_CARD = "https://aip.baidubce.com/rest/2.0/ocr/v1/social_security_card"# 港澳通行證識別HK_MACAU_EXITENTRYPERMIT = "https://aip.baidubce.com/rest/2.0/ocr/v1/HK_Macau_exitentrypermit"# 臺灣通行證識別TAIWAN_EXITENTRYPERMIT = " https://aip.baidubce.com/rest/2.0/ocr/v1/taiwan_exitentrypermit"# 戶口本識別HOUSEHOLD_REGISTER = "https://aip.baidubce.com/rest/2.0/ocr/v1/household_register"# 出生醫學識別證明BITTH_CERTIFICATE = "https://aip.baidubce.com/rest/2.0/ocr/v1/birth_certificate"# 多卡證類別檢測MULTI_CARD_CLASSIFY = "https://aip.baidubce.com/rest/2.0/ocr/v1/multi_card_classify"def ocr_help():print("==========百度ocr使用說明==========")print("本API基于ocr卡證識別api編寫,官方文檔地址:https://ai.baidu.com/ai-doc/OCR/rk3h7xzck")print("使用示例:")print('''baiduOcr = BaiduCardOcr(OcrType.ID_CARD)baiduOcr.set_access_token("access_token")wordsList = baiduOcr.recoginze(image="D:\\txt1.png",options={})['words_result']for word in wordsList:print(word)''')class BaiduCardOcr:# ocr版本ocr_type = 0def __init__(self, ocr_type: OcrType):"""ocr_type ocr識別類型 STANDARD_BASIC標準版 標準版含位置STANDARD_WITH_LOCATION 高精讀版ACCURATE_BASIC 高精度版含位置ACCURATE_WITH_LOCATION@param ocr_type:"""self.options = Noneself.pdf_file = Noneself.url = Noneself.image = Noneself.access_token = Noneself.ocr_type = ocr_type.valuedef gen_access_token(self, api_key, secret_key):"""生成access_token@param api_key:@param secret_key:@return:"""request_url = f'''https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={api_key}&client_secret={secret_key}'''response = requests.get(request_url)if response:self.access_token = response.json()['access_token']def __check(self):"""參數檢查@return:"""image = self.imageurl = self.urlpdf_file = self.pdf_fileif (image is None or image == "") and (url is None or url == "") and (pdf_file is None or pdf_file == ""):raise ValueError("image,url,pdf_file至少傳入一項")if (image is not None) and (image != ""):f = open(image, 'rb')self.options['image'] = base64.b64encode(f.read()).decode()elif (image is not None or image == "") and (url is not None and url != ""):self.options['url'] = urlelse:f = open(pdf_file, 'rb')self.options['pdf_file'] = base64.b64encode(f.read()).decode()keys = self.options.keys()if ("image" not in keys) and ("url" not in keys) and ("pdf_file" not in keys):raise ValueError("image,url,pdf_file至少傳入一項")try:self.ocr_type.valueexcept Exception as e:log.info(repr(e))self.ocr_type = OcrType.STANDARD_BASIClog.info("ocr_type類型,已重置為標準版")def __request(self, request_url, data):# 設置headerheaders = {'content-type': 'application/x-www-form-urlencoded'}# 請求print(self.options)print(headers)return requests.post(request_url + "?access_token=%s" % self.access_token, data=self.options,headers=headers).json()def recoginze(self, image: str = None, url: str = None, pdf_file: str = None, options=None):"""識別@param image:@param url:@param pdf_file:@param options:@return:"""self.image = imageself.url = urlself.pdf_file = pdf_fileself.options = options or {}self.__check()# 發送請求return self.__request(self.ocr_type.value, options)def set_access_token(self, access_token):"""設置access_token@param access_token:@return:"""self.access_token = access_token

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82698.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu20.04 gr-gsm完整安裝教程

gr-gsm完整安裝教程 安裝gnuradio3.8安裝依賴項指定gnuradio源安裝gnuradio 安裝gr-gsm安裝依賴項安裝gr-gsm修改環境變量 安裝成功 安裝gnuradio3.8 安裝依賴項 sudo apt install git cmake g libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx …

(自用)Java學習-5.15(模糊搜索,收藏,購物車)

1. 模糊搜索商品功能 前端實現: 通過解析URL參數(如search聯想)獲取搜索關鍵字,發送AJAX GET請求到后端接口/product/searchGoodsMessage。 動態渲染搜索結果:若結果非空,循環遍歷返回的商品數據&#xff…

STM32 TIM 定時器深度剖析:結構、時基、中斷與應用開發(超形象詳解)

文章目錄 定時器(TIM)定時器種類與分布定時器的基本結構時基單元時基單元基本結構計數器計數方向時基單元時鐘來源計算寄存器預加載機制 自制延時函數獲取單片機當前時間實現延遲函數初始化定時器3的時基單元配置中斷編寫中斷響應函數測試延遲函數 定時器…

Java使用minio上傳整個目錄下的所有內容

目錄 1、添加相關配置 2、添加依賴 3、實現方法 1??基礎版: 2??優化版(推薦使用): 3??上傳遠程主機上的目錄內容: 4??直接上傳遠程主機中的目錄內容 業務背景:需要需要minio進行上傳指定目錄下所有…

Python的分布式網絡爬蟲系統實現

1. 系統架構概述 一個典型的分布式網絡爬蟲系統通常包含以下幾個核心組件: 1.主節點(Master Node): 任務調度:負責將抓取任務分配給各個工作節點。URL 管理:維護待抓取的 URL 隊列和已抓取的 URL 集合&a…

AI工具的選擇:Dify還是傳統工具?

從純技術視角出發,選擇Dify還是傳統開發工具需要基于六個核心維度進行理性決策。以下為結構化分析框架,附典型場景示例: 1. 開發效率 vs 控制力權衡矩陣 維度Dify優勢場景傳統工具優勢場景迭代速度需求明確的標準CRUD(如后臺管理…

2.3 TypeScript 非空斷言操作符(后綴 !)詳解

在 TypeScript 中,當你開啟了嚴格的空值檢查(strictNullChecks)后,變量如果可能是 null 或 undefined,就必須在使用前進行顯式的判斷。為了在某些場景下簡化代碼,TypeScript 提供了非空斷言操作符&#xff…

深度學習:損失函數與激活函數全解析

目錄 深度學習中常見的損失函數和激活函數詳解引言一、損失函數詳解1.1 損失函數的作用與分類1.2 回歸任務損失函數1.2.1 均方誤差(MSE)1.2.2 平均絕對誤差(MAE) 1.3 分類任務損失函數1.3.1 交叉熵損失(Cross-Entropy&…

掌握 npm 核心操作:從安裝到管理依賴的完整指南

圖為開發者正在終端操作npm命令,圖片來源:Unsplash 作為 Node.js 生態的基石,npm(Node Package Manager)是每位開發者必須精通的工具。每天有超過 1700 萬個項目通過 npm 共享代碼,其重要性不言而喻。本文…

Elasticsearch的運維

Elasticsearch 運維工作詳解:從基礎保障到性能優化 Elasticsearch(簡稱 ES)作為分布式搜索和分析引擎,其運維工作需要兼顧集群穩定性、性能效率及數據安全。以下從核心運維模塊展開說明,結合實踐場景提供可落地的方案…

國產三維CAD皇冠CAD(CrownCAD)建模教程:汽車電池

在線解讀『汽車電池』的三維建模流程,講解3D草圖、保存實體、拉伸凸臺/基體、設置外觀等操作技巧,一起和皇冠CAD(CrownCAD)學習制作步驟吧! 汽車電池(通常指鉛酸蓄電池或鋰離子電池)是車輛電氣系…

深入理解 JDK、JRE 和 JVM 的區別

在 Java 中,JDK、JRE 和 JVM 是非常重要的概念,它們各自扮演著不同的角色,卻又緊密相連。今天,就讓我們來詳細探討一下它們之間的區別。 一、JVM JVM 即 Java 虛擬機,它是整個 Java 技術體系的核心。JVM 提供了 Java…

云電腦顯卡性能終極對決:ToDesk云電腦/順網云/海馬云,誰才是4K游戲之王?

一、引言 1.1 云電腦的算力革命 云電腦與傳統PC的算力供給差異 傳統PC的算力構建依賴用戶一次性配置本地硬件,特別是CPU與顯卡(GPU)。而在高性能計算和游戲圖形渲染等任務中,GPU的能力往往成為決定體驗上限的核心因素。隨著游戲分…

撤銷Conda初始化

在安裝miniconda3的過程中,最后系統會出現這一行提示用戶可以選擇自動初始化,這樣的話,系統每次啟動就會自動啟動基礎(base)環境。 但是我們也可以通過 conda init --reverse $shell 來撤銷 Conda 的初始化設置。這將恢…

Flask-SQLAlchemy數據庫查詢:query

1、為什么可以用 模型類.query 來查詢數據庫? 在 Flask 中使用 SQLAlchemy ORM 時,所有繼承自 db.Model 的模型類都會自動獲得一個 query 屬性。 其本質是 db.session.query(模型類) 的快捷方式,無需顯式操作 db.session。 代碼示例&#…

【免費】【無需登錄/關注】度分秒轉換在線工具

UVE Toolbox 功能概述 這是一個用于地理坐標轉換的在線工具,支持兩種轉換模式: 十進制度 → 度分秒 度分秒 → 十進制度 使用方法 十進制度轉度分秒 在"經度"輸入框中輸入十進制度格式的經度值(例如:121.46694&am…

怎么判斷一個Android APP使用了React Native 這個跨端框架

要判斷一個 Android 應用是否使用了 React Native 框架,可以通過以下方法逐步驗證: 一、安裝包結構分析 1. 解壓 APK 將 .apk 文件重命名為 .zip 并解壓,檢查以下特征文件: ? assets/index.android.bundle: React Na…

Pluto實驗報告——基于2ASK的簡易的通信系統

一、實驗目的 1. 熟悉并掌握PLUTO SDR 主動學習模塊的使用; 2.通過matlab 編碼與adalm pluto 相配合達成一個簡易的通信系統,并能 夠傳輸一些較為簡單的信息。 二、實驗原理 2ASK 調制原理: 振幅鍵控是指利用載波的振幅變化來傳遞數字基帶信…

Ubuntu 24-部署FTP和自定義用戶

目錄 一、 安裝 vsftpd 二、創建 FTP 數據目錄 三、創建 FTP 用戶 四、配置 vsftpd 五、重啟 vsftpd 服務 六、增加新用戶腳本 一、 安裝 vsftpd sudo apt update sudo apt install vsftpd -y 二、創建 FTP 數據目錄 sudo mkdir -p /data/ftp sudo chown nobody:nogrou…

MySQL問題:什么是MySQL的中的最左匹配原則?

是指在復合索引中,查詢條件需要按照索引列的順序從最左側列開始依次匹配。只有查詢條件中的列按照索引的最左邊列開始進行匹配,索引才能被有效使用,但有時雖然不是正常順序,由于MySQL中存在優化器,會自動調整順序&…