74 lines
2.8 KiB
Python
74 lines
2.8 KiB
Python
|
||
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}"
|
||
response = requests.request("POST", url)
|
||
return response.json().get("access_token")
|
||
|
||
def test_table_v2(image_path, api_key, secret_key):
|
||
# 表格识别V2接口
|
||
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/table"
|
||
|
||
with open(image_path, "rb") as f:
|
||
img = base64.b64encode(f.read())
|
||
|
||
params = {
|
||
"image": img,
|
||
"is_sync": "true",
|
||
"request_type": "excel"
|
||
}
|
||
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'}
|
||
response = requests.post(request_url, data=params, headers=headers)
|
||
|
||
return response.json()
|
||
|
||
if __name__ == "__main__":
|
||
api_key = "kIehdWbbVD85K18qZYz6SeUf"
|
||
secret_key = "RCXTgmVjJJkNNMhfY5ASab0xY3mvF6d7"
|
||
|
||
input_dir = Path(r"F:\Administrator\桌面\OCR系统_Release\data\input")
|
||
images = list(input_dir.glob("*.jpg")) + list(input_dir.glob("*.png"))
|
||
|
||
if not images:
|
||
print("错误: 桌面 Release 目录下没有找到图片文件")
|
||
else:
|
||
latest_image = max(images, key=os.path.getmtime)
|
||
print(f"正在使用【表格识别V2】接口测试图片: {latest_image.name}")
|
||
|
||
result = test_table_v2(str(latest_image), api_key, secret_key)
|
||
|
||
# 打印表格外的文字(header/footer)
|
||
if "tables_result" in result:
|
||
print("\n--- 表格识别结果 ---")
|
||
for table in result["tables_result"]:
|
||
print("\n[Header 区域]:")
|
||
header = table.get("header", [])
|
||
for cell in header:
|
||
print(f"- {cell.get('words')}")
|
||
|
||
print("\n[Footer 区域]:")
|
||
footer = table.get("footer", [])
|
||
for cell in footer:
|
||
print(f"- {cell.get('words')}")
|
||
elif "result" in result and "tables_result" in result["result"]:
|
||
print("\n--- 表格识别结果 (嵌套结构) ---")
|
||
for table in result["result"]["tables_result"]:
|
||
print("\n[Header 区域]:")
|
||
header = table.get("header", [])
|
||
for cell in header:
|
||
print(f"- {cell.get('words')}")
|
||
|
||
print("\n[Footer 区域]:")
|
||
footer = table.get("footer", [])
|
||
for cell in footer:
|
||
print(f"- {cell.get('words')}")
|
||
else:
|
||
print(f"识别失败或未找到表格: {json.dumps(result, indent=2, ensure_ascii=False)[:500]}")
|