基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)

This commit is contained in:
dqb-dev
2026-10-01 22:15:22 +08:00
commit 1e65792b09
499 changed files with 204579 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
"""同一张渲染 PNG 分别喂给 两个 Python 后端 的 ocr_worker,对比识别结果。"""
import base64
import json
import subprocess
import sys
ROOT = r"C:\Users\099978\Documents\SharpDevelop Projects\成套报价软件\pdfbt"
IMG = ROOT + r"\bin\Debug\realtest\selftest_render.png"
WORKER = ROOT + r"\bin\Debug\ocr_worker.py"
PYENV = ROOT + r"\pyenv\python.exe"
PYDEV = r"F:\PythonDev\python\python\python.exe"
def run_ocr(python_exe, label):
with open(IMG, "rb") as f:
b64 = base64.b64encode(f.read()).decode()
p = subprocess.Popen([python_exe, "-u", WORKER],
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, text=True, encoding="utf-8")
# 等 warm+ready 两条就绪消息
line1 = p.stdout.readline()
line2 = p.stdout.readline()
if 'ready' not in line2:
# 兼容只发一条的情况
if 'ready' not in line1 and 'warm' not in line1:
print(label, '未就绪:', line1[:120], line2[:120]); p.kill(); return None
req = json.dumps({"id": 1, "image": b64}, ensure_ascii=False)
p.stdin.write(req + "\n")
p.stdin.flush()
resp = p.stdout.readline()
p.kill()
try:
obj = json.loads(resp)
except Exception as e:
print(label, "解析失败:", e, "| 原始:", resp[:200])
return None
items = obj.get("items") or []
texts = [it.get("text", "") for it in items]
print("%s: %d 条, 耗时 %s ms" % (label, len(items), obj.get("ms")))
return texts
t_pyenv = run_ocr(PYENV, "pyenv(CPU)")
t_dev = run_ocr(PYDEV, "开发机(DML)")
if t_pyenv is not None and t_dev is not None:
s1, s2 = set(t_pyenv), set(t_dev)
only_env = [t for t in t_pyenv if t not in s2]
only_dev = [t for t in t_dev if t not in s1]
print("\n仅 pyenv 识别到(%d):" % len(only_env))
for t in only_env[:10]:
print(" +", t)
print("仅 开发机 识别到(%d):" % len(only_dev))
for t in only_dev[:10]:
print(" -", t)