完整的Python测试脚本,包含所有API端点的调用示例:
import requests
import json
import time
from pathlib import Path
class LPRAPIClient:
"""智能车牌识别API客户端"""
def __init__(self, api_key, base_url="https://yolo.rxdev.cloud"):
self.api_key = api_key
self.base_url = base_url.rstrip('/')
self.session = requests.Session()
# 设置默认请求头
self.session.headers.update({
'Authorization': f'Bearer {api_key}',
'User-Agent': 'LPR-API-Client/1.0'
})
def recognize_image(self, image_path, use_header_auth=True):
"""
车牌识别API调用
Args:
image_path (str): 图片文件路径
use_header_auth (bool): 是否使用Header认证
Returns:
dict: API响应结果
"""
url = f"{self.base_url}/api/recognize"
try:
# 准备文件
with open(image_path, 'rb') as f:
files = {'image': f}
# 准备数据
data = {}
if not use_header_auth:
data['api_key'] = self.api_key
print(f"🚀 开始识别图片: {Path(image_path).name}")
start_time = time.time()
# 发送请求
response = self.session.post(url, files=files, data=data)
request_time = round((time.time() - start_time) * 1000, 2)
print(f"⏱️ 请求耗时: {request_time}ms")
print(f"📡 响应状态: {response.status_code}")
if response.status_code == 200:
result = response.json()
if result.get('success'):
data = result.get('data', {})
print(f"✅ 识别成功!")
print(f"🔢 车牌号码: {data.get('plate_text', 'N/A')}")
print(f"🎨 车牌颜色: {data.get('color', 'N/A')}")
print(f"🎯 识别置信度: {data.get('confidence', 0):.2%}")
print(f"📍 省份信息: {data.get('province', 'N/A')}")
print(f"📦 边界框: {data.get('bbox', 'N/A')}")
print(f"⚡ 处理时间: {data.get('processing_time', 0):.2f}s")
# 额度信息
quota_info = result.get('quota_info', {})
print(f"📊 今日剩余: {quota_info.get('daily_remaining', 'N/A')}")
print(f"📈 本月剩余: {quota_info.get('monthly_remaining', 'N/A')}")
# 任务信息
print(f"🆔 任务ID: {result.get('task_id', 'N/A')}")
print(f"🆔 记录ID: {result.get('record_id', 'N/A')}")
else:
print(f"❌ 识别失败: {result.get('message', '未知错误')}")
return result
else:
print(f"❌ 请求失败: {response.status_code}")
try:
error_info = response.json()
print(f"错误信息: {error_info}")
except:
print(f"错误信息: {response.text}")
return None
except FileNotFoundError:
print(f"❌ 文件不存在: {image_path}")
return None
except Exception as e:
print(f"❌ 请求异常: {str(e)}")
return None
def get_user_stats(self):
"""获取用户统计信息"""
url = f"{self.base_url}/api/stats"
try:
print("📊 获取用户统计信息...")
response = self.session.get(url)
if response.status_code == 200:
result = response.json()
if result.get('success'):
data = result.get('data', {})
print("✅ 统计信息获取成功!")
print(f"📋 总任务数: {data.get('total_tasks', 0)}")
print(f"✅ 成功任务: {data.get('success_tasks', 0)}")
print(f"📅 今日任务: {data.get('today_tasks', 0)}")
print(f"📆 本月任务: {data.get('month_tasks', 0)}")
print(f"🎯 成功率: {data.get('success_rate', 0):.1f}%")
quota_info = data.get('quota_info', {})
print(f"📊 今日使用: {quota_info.get('daily_used', 0)}/{quota_info.get('daily_total', 0)}")
print(f"📈 本月使用: {quota_info.get('monthly_used', 0)}/{quota_info.get('monthly_total', 0)}")
return result
else:
print(f"❌ 获取统计信息失败: {response.status_code}")
return None
except Exception as e:
print(f"❌ 请求异常: {str(e)}")
return None
def get_task_record(self, task_id):
"""获取任务记录"""
url = f"{self.base_url}/api/records/{task_id}"
try:
print(f"📋 获取任务记录: {task_id}")
response = self.session.get(url)
if response.status_code == 200:
result = response.json()
print("✅ 任务记录获取成功!")
return result
else:
print(f"❌ 获取任务记录失败: {response.status_code}")
return None
except Exception as e:
print(f"❌ 请求异常: {str(e)}")
return None
def main():
"""主函数 - 完整的API测试流程"""
# ⚠️ 请替换为您的实际API密钥
API_KEY = "lpr_username_xxxxxxxxxxxxxxxx"
BASE_URL = "https://yolo.rxdev.cloud" # 或您的API地址
print("🎯 智能车牌识别API测试工具")
print("=" * 50)
# 初始化客户端
client = LPRAPIClient(API_KEY, BASE_URL)
# 1. 测试车牌识别(Header认证)
print("\n🧪 测试1: 车牌识别 (Header认证)")
print("-" * 30)
image_path = "test_image.jpg" # 请替换为实际图片路径
result = client.recognize_image(image_path, use_header_auth=True)
task_id = result.get('task_id') if result else None
# 2. 测试车牌识别(URL参数认证)
print("\n🧪 测试2: 车牌识别 (URL参数认证)")
print("-" * 30)
client.recognize_image(image_path, use_header_auth=False)
# 3. 测试获取用户统计
print("\n🧪 测试3: 用户统计信息")
print("-" * 30)
client.get_user_stats()
# 4. 测试获取任务记录
if task_id:
print("\n🧪 测试4: 获取任务记录")
print("-" * 30)
client.get_task_record(task_id)
print("\n✨ 测试完成!")
print("如需更多帮助,请查看API文档或联系技术支持。")
if __name__ == "__main__":
main()