test_json_extraction.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. """
  2. 测试 JSON 格式文本提取功能
  3. """
  4. import sys
  5. import os
  6. # 添加项目根目录到路径
  7. sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
  8. from app.services.qwen_ocr import QwenOCRClient
  9. def test_json_extraction():
  10. """测试从 JSON 格式中提取文本"""
  11. # 创建客户端实例(不需要真实的 API Key)
  12. client = QwenOCRClient(api_key="test_key")
  13. # 测试用例1:标准 JSON 格式
  14. test_json_1 = """```json
  15. [
  16. {"rotate_rect": [178, 272, 25, 157, 90], "text": "统一社会信用代码"},
  17. {"rotate_rect": [158, 308, 21, 119, 90], "text": "91510100MAEL1NGR2D"},
  18. {"rotate_rect": [492, 282, 79, 277, 90], "text": "营业执照"},
  19. {"rotate_rect": [494, 352, 37, 81, 90], "text": "(副本)"},
  20. {"rotate_rect": [228, 438, 246, 27, 0], "text": "名称 成都网讯创智科技有限公司"}
  21. ]
  22. ```"""
  23. # 测试用例2:不带 markdown 标记的 JSON
  24. test_json_2 = """[
  25. {"rotate_rect": [178, 272, 25, 157, 90], "text": "统一社会信用代码"},
  26. {"rotate_rect": [158, 308, 21, 119, 90], "text": "91510100MAEL1NGR2D"}
  27. ]"""
  28. # 测试用例3:普通文本(不是 JSON)
  29. test_text = "这是普通的文本内容,不是 JSON 格式"
  30. print("=" * 60)
  31. print("JSON 文本提取测试")
  32. print("=" * 60)
  33. # 测试1
  34. print("\n测试1:带 markdown 标记的 JSON")
  35. print("-" * 60)
  36. result_1 = client._extract_text_from_json(test_json_1)
  37. print("提取结果:")
  38. print(result_1)
  39. print("-" * 60)
  40. # 测试2
  41. print("\n测试2:不带 markdown 标记的 JSON")
  42. print("-" * 60)
  43. result_2 = client._extract_text_from_json(test_json_2)
  44. print("提取结果:")
  45. print(result_2)
  46. print("-" * 60)
  47. # 测试3
  48. print("\n测试3:普通文本(非 JSON)")
  49. print("-" * 60)
  50. result_3 = client._extract_text_from_json(test_text)
  51. print("提取结果:")
  52. print(result_3)
  53. print("-" * 60)
  54. # 验证结果
  55. print("\n" + "=" * 60)
  56. print("验证结果")
  57. print("=" * 60)
  58. expected_1 = "统一社会信用代码\n91510100MAEL1NGR2D\n营业执照\n(副本)\n名称 成都网讯创智科技有限公司"
  59. expected_2 = "统一社会信用代码\n91510100MAEL1NGR2D"
  60. expected_3 = test_text
  61. print(f"测试1: {'✅ 通过' if result_1 == expected_1 else '❌ 失败'}")
  62. print(f"测试2: {'✅ 通过' if result_2 == expected_2 else '❌ 失败'}")
  63. print(f"测试3: {'✅ 通过' if result_3 == expected_3 else '❌ 失败'}")
  64. print("\n" + "=" * 60)
  65. print("测试完成")
  66. print("=" * 60)
  67. if __name__ == "__main__":
  68. test_json_extraction()