import os import base64 import requests import json from pathlib import Path def get_access_token(api_key, secret_key): url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={api_key}&client_secret={secret_key}" payload = "" headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' } response = requests.request("POST", url, headers=headers, data=payload) return response.json().get("access_token") def test_general_ocr(image_path, api_key, secret_key): # 用户要求的接口: 通用卡证票据识别 request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_ocr" with open(image_path, "rb") as f: img = base64.b64encode(f.read()) params = {"image": img} access_token = get_access_token(api_key, secret_key) request_url = request_url + "?access_token=" + access_token headers = {'content-type': 'application/x-www-form-urlencoded'} print(f"正在请求接口: {request_url}") response = requests.post(request_url, data=params, headers=headers) return response.json() if __name__ == "__main__": # 使用 config.ini 中的密钥 api_key = "yBU35EDIZ2ITLRk1MnFBN1tv" secret_key = "7L0VEOIcqHhaqzZec5LXsHGzJhgFivMr" # 测试图片路径 test_image = r"F:\Administrator\桌面\OCR系统_Release\data\input\采购单_20260717_优链快批销售单.jpg" if not os.path.exists(test_image): print(f"错误: 找不到测试图片 {test_image}") else: print(f"正在测试接口【/v1/general_ocr】图片: {os.path.basename(test_image)}") result = test_general_ocr(test_image, api_key, secret_key) print("\n--- API 返回结果 ---") print(json.dumps(result, indent=2, ensure_ascii=False)) if "error_code" in result: if result["error_code"] == 6: print("\n【重要提示】: 权限错误 (6)。请前往百度云控制台开启【通用票据识别】(General OCR) 服务。") else: print(f"\nAPI 返回错误: {result.get('error_msg')}") else: print("\n识别成功!请检查返回结果中的 words_result 是否包含供应商和日期。")