import json, sys sys.argv = ["x"] from bench import GT, norm, lev from paddleocr import PaddleOCR out = {} for tier in ["PP-OCRv6_medium", "PP-OCRv6_small", "PP-OCRv6_tiny", "PP-OCRv5_server", "PP-OCRv5_mobile"]: ocr = PaddleOCR(text_detection_model_name=f"{tier}_det", text_recognition_model_name=f"{tier}_rec", use_doc_orientation_classify=False, use_doc_unwarping=False, use_textline_orientation=False) out[tier] = [] for name, gt in GT.items(): texts = ocr.predict(f"samples/{name}")[0]["rec_texts"] preds = [norm(p) for p in texts] for g in gt: ng = norm(g) if any(ng in p for p in preds): continue best = min(preds, key=lambda p: lev(ng, p)) if preds else "" orig = texts[preds.index(best)] if best in preds else "" out[tier].append({"doc": name, "expected": g, "got": orig, "edits": lev(ng, best)}) print(json.dumps(out, ensure_ascii=False))