RapidOCR

import json import logging import sys from rapidocr import RapidOCR logging.disable(logging.INFO) def main(): engine = RapidOCR() img_url = sys.argv[1] result = engine(img_url) output = [{"text": txt, "box": box.tolist()} for txt, box in zip(result.txts, result.boxes)] sys.stdout.buffer.write(json.dumps(output, ensure_ascii=False, indent=2).encode("utf-8")) sys.stdout.buffer.write(b"\n") if __name__ == "__main__": main()

build

# -*- mode: python ; coding: utf-8 -*- import sys from PyInstaller.utils.hooks import collect_data_files, collect_submodules # 包含模型文件 datas = collect_data_files("rapidocr") hiddenimports = collect_submodules("rapidocr") + [ "onnxruntime", "onnxruntime.capi._pybind_state", ] # 按平台输出到不同目录: ocr-darwin / ocr-win32 platform_name = "darwin" if sys.platform == "darwin" else "win32" a = Analysis( ["main.py"], pathex=[], binaries=[], datas=datas, hiddenimports=hiddenimports, hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[ "rapidocr_api", "fastapi", "uvicorn", "uvloop", "starlette", ], noarchive=False, ) pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, [], name="ocr", debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, ) coll = COLLECT( exe, a.binaries, a.datas, strip=False, upx=True, upx_exclude=[], name=f"ocr-{platform_name}", )