"""阿里云护照 OCR 联调脚本。 用法: # 测本地图片 python3 scripts/test_ocr_passport.py /path/to/passport.jpg # 测公网 URL python3 scripts/test_ocr_passport.py --url https://example.com/passport.jpg 前置: pip install -r requirements.txt 在项目根目录的 .env 填好: ALIYUN_OCR_ACCESS_KEY_ID= ALIYUN_OCR_ACCESS_KEY_SECRET= """ from __future__ import annotations import argparse import json import sys from pathlib import Path # 让脚本能在仓库根目录直接运行 sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from app.aliyun_ocr import OcrCallError, OcrConfigError, recognize_passport # noqa: E402 def main() -> int: parser = argparse.ArgumentParser(description="阿里云护照 OCR 自检") parser.add_argument("image", nargs="?", help="本地图片路径") parser.add_argument("--url", help="公网图片 URL") args = parser.parse_args() if not args.image and not args.url: parser.error("请提供本地图片路径或 --url") try: if args.image: path = Path(args.image).expanduser().resolve() if not path.is_file(): print(f"[FAIL] 文件不存在: {path}", file=sys.stderr) return 2 data = recognize_passport(image_bytes=path.read_bytes()) else: data = recognize_passport(image_url=args.url) except OcrConfigError as exc: print(f"[CONFIG] {exc}", file=sys.stderr) return 3 except OcrCallError as exc: print(f"[CALL] {exc}", file=sys.stderr) return 4 print(json.dumps(data, ensure_ascii=False, indent=2)) return 0 if __name__ == "__main__": raise SystemExit(main())