PP-OCRv5.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import os
  2. import base64
  3. import requests
  4. API_URL = "https://c8pdr6l6q4eal165.aistudio-app.com/ocr"
  5. TOKEN = "16455708d55afac2f074f4ae5a88fc6c7bae7920"
  6. file_path = "E:\\project\\arbitration_system\\evidence_extractor\\test\\F86-ZC1-2023-0001\\考勤表\\F86-ZC1-2023-0001-010_00.png"
  7. input_filename = os.path.splitext(os.path.basename(file_path))[0]
  8. with open(file_path, "rb") as file:
  9. file_bytes = file.read()
  10. file_data = base64.b64encode(file_bytes).decode("ascii")
  11. headers = {
  12. "Authorization": f"token {TOKEN}",
  13. "Content-Type": "application/json"
  14. }
  15. required_payload = {
  16. "file": file_data,
  17. "fileType": 1,
  18. }
  19. optional_payload = {
  20. "useDocOrientationClassify": False,
  21. "useDocUnwarping": False,
  22. "useTextlineOrientation": False,
  23. }
  24. payload = {**required_payload, **optional_payload}
  25. response = requests.post(API_URL, json=payload, headers=headers)
  26. assert response.status_code == 200
  27. result = response.json()["result"]
  28. os.makedirs("output", exist_ok=True)
  29. # 获取并处理识别文本
  30. if "rec_texts" in result:
  31. print("=== 识别文本内容 ===")
  32. for i, text in enumerate(result["rec_texts"]):
  33. print(f"{i + 1:2d}: {text}")
  34. # 保存文本到文件
  35. text_filename = f"output/{input_filename}_text.txt"
  36. with open(text_filename, "w", encoding="utf-8") as f:
  37. for text in result["rec_texts"]:
  38. f.write(text + "\n")
  39. print(f"\n文本已保存到: {text_filename}")
  40. # 如果需要处理多个页面
  41. for i, res in enumerate(result.get("ocrResults", [])):
  42. if "prunedResult" in res:
  43. pruned_result = res["prunedResult"]
  44. if "rec_texts" in pruned_result:
  45. print(f"\n=== 页面 {i + 1} 的识别文本 ===")
  46. for j, text in enumerate(pruned_result["rec_texts"]):
  47. print(f" 行 {j + 1}: {text}")
  48. # 下载图片部分保持不变
  49. if "ocrImage" in res:
  50. image_url = res["ocrImage"]
  51. img_response = requests.get(image_url)
  52. if img_response.status_code == 200:
  53. filename = f"output/{input_filename}_{i}.jpg"
  54. with open(filename, "wb") as f:
  55. f.write(img_response.content)
  56. print(f"图片已保存到: {filename}")
  57. else:
  58. print(f"图片下载失败,状态码: {img_response.status_code}")