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}",
)