百度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 = 0 def __init__(self, ocr_type: OcrType): """ ocr_type ocr识别类型 STANDARD_BASIC标准版 标准版含位置STANDARD_WITH_LOCATION 高精读版ACCURATE_BASIC 高精度版含位置ACCURATE_WITH_LOCATION @param ocr_type: """ self.options = None self.pdf_file = None self.url = None self.image = None self.access_token = None self.ocr_type = ocr_type.value def 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.image url = self.url pdf_file = self.pdf_file if (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'] = url else: 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.value except Exception as e: log.info(repr(e)) self.ocr_type = OcrType.STANDARD_BASIC log.info("ocr_type类型,已重置为标准版") def __request(self, request_url, data): # 设置header headers = {'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 = image self.url = url self.pdf_file = pdf_file self.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 = 0 def __init__(self, ocr_type: OcrType): """ ocr_type ocr识别类型 STANDARD_BASIC标准版 标准版含位置STANDARD_WITH_LOCATION 高精读版ACCURATE_BASIC 高精度版含位置ACCURATE_WITH_LOCATION @param ocr_type: """ self.options = None self.pdf_file = None self.url = None self.image = None self.access_token = None self.ocr_type = ocr_type.value def 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.image url = self.url pdf_file = self.pdf_file if (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'] = url else: 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.value except Exception as e: log.info(repr(e)) self.ocr_type = OcrType.STANDARD_BASIC log.info("ocr_type类型,已重置为标准版") def __request(self, request_url, data): # 设置header headers = {'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 = image self.url = url self.pdf_file = pdf_file self.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
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。