#!/usr/bin/env python3 """批量验证码识别器(准确性测试用)。 加载 old / beta 两个 ddddocr 模型,各跑一次完整字符集和一次字母数字限定字符集, 对每个输入图片输出 4 个变体的识别结果 JSON。 用法: ocr.py file.png ... > result.json """ import json import sys import ddddocr ALNUM = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" _VARIANTS = {} def _make(**kwargs): ocr = ddddocr.DdddOcr(show_ad=False, **kwargs) ocr.set_ranges(ALNUM) return ocr def _load(): if _VARIANTS: return _VARIANTS _VARIANTS["old"] = _make(old=True) _VARIANTS["old_r"] = _make(old=True) _VARIANTS["beta"] = _make(beta=True) _VARIANTS["beta_r"] = _make(beta=True) return _VARIANTS def main(): files = sys.argv[1:] if not files: print("usage: ocr.py file.png ... > result.json", file=sys.stderr) sys.exit(2) variants = _load() out = {} for f in files: try: data = open(f, "rb").read() row = {k: variants[k].classification(data) for k in variants} except Exception as e: # noqa: BLE001 row = {"err": str(e)} out[f] = row print(json.dumps(out, ensure_ascii=False)) if __name__ == "__main__": main()