phpwind-captcha-ocr / scripts /onnx_ocr_raw.py
FlanChanXwO's picture
Upload scripts/onnx_ocr_raw.py with huggingface_hub
aac8079 verified
Raw
History Blame Contribute Delete
1.06 kB
#!/usr/bin/env python3
"""用原始图训练的 ONNX 模型识别验证码。预处理: RGB 160x64 /255 -> (1,3,64,160) -> 4位数字
"""
import json
import os
import sys
import numpy as np
import onnxruntime as ort
from PIL import Image
MODEL = os.path.expanduser("~/sp_captcha_assets/models/captcha_1000_raw.onnx")
_sess = None
def _get_sess():
global _sess
if _sess is None:
_sess = ort.InferenceSession(MODEL, providers=["CPUExecutionProvider"])
return _sess
def predict(path):
im = Image.open(path).convert("RGB").resize((160, 64), Image.BILINEAR)
a = np.asarray(im, dtype=np.float32) / 255.0
x = a.transpose(2, 0, 1)[None]
out = _get_sess().run(None, {"input": x})[0]
return "".join(str(int(out[0, p].argmax())) for p in range(4))
def main():
out = {}
for f in sys.argv[1:]:
try:
out[f] = {"onnx": predict(f)}
except Exception as e:
out[f] = {"onnx": "", "err": str(e)}
print(json.dumps(out, ensure_ascii=False))
if __name__ == "__main__":
main()