当前位置: 首页 > article >正文

百度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.lryc.cn/news/2387653.html

相关文章:

  • 华为高斯数据库(GaussDB)深度解析:国产分布式数据库的旗舰之作
  • LWIP 中,lwip_shutdown 和 lwip_close 区别
  • xml双引号可以不转义
  • 互联网大厂Java面试:从Spring到微服务的挑战
  • 兰亭妙微 | 图标设计公司 | UI设计案例复盘
  • OpenCV视觉图片调整:从基础到实战的技术指南
  • C#日期和时间:DateTime转字符串全面指南
  • 手机收不到WiFi,手动输入WiFi名称进行连接不不行,可能是WiFi频道设置不对
  • 批量文件重命名工具
  • ATPrompt方法:属性嵌入的文本提示学习
  • 14.「实用」扣子(coze)教程 | Excel文档自动批量AI文档生成实战,中级开篇
  • 对于geoserver发布数据后的开发应用
  • 液体散货装卸管理人员备考指南
  • 基于Qlearning强化学习的二阶弹簧动力学模型PID控制matlab性能仿真
  • 【监控】Spring Boot 应用监控
  • 「MATLAB」计算校验和 Checksum
  • 【AS32X601驱动系列教程】SMU_系统时钟详解
  • 09 接口自动化-用例管理框架pytest之allure报告定制以及数据驱动
  • React笔记-Ant Design X样本间对接智谱AI
  • 网络安全-等级保护(等保) 3-2 GB/T 28449-2019《信息安全技术 网络安全等级保护测评过程指南》-2018-12-28发布【现行】
  • 【Bug】--node命令加载失败
  • Java 大视界 -- 基于 Java 的大数据分布式存储在视频会议系统海量视频数据存储与回放中的应用(263)
  • ROS云课三分钟-3D性能测试supertuxkart和游戏推荐等-国际象棋
  • 汽车零部件行业PLM案例:得瑞客汽车(Dereik) 部署国产PLM
  • Web攻防-SQL注入数据格式参数类型JSONXML编码加密符号闭合
  • 浅谈测试驱动开发TDD
  • 深入解析 Flink 中的时间与窗口机制
  • 医疗AI项目文档编写核心要素硬核解析:从技术落地到合规实践
  • voc怎么转yolo,如何分割数据集为验证集,怎样检测CUDA可用性 并使用yolov8训练安全帽数据集且构建基于yolov8深度学习的安全帽检测系统
  • vllm server返回404的一种可能得解决方案