zai-org/GLM-OCR を使ったローカルOCRサーバーです。
FastAPI + シンプルなWeb UIで、画像/PDFをページ単位でOCRできます。
- GLM-OCR推論(
text/table/formula/extract_json) - PDF入力(
pypdfium2でページを画像化してOCR) - 進捗表示(
事前処理中->i/nページをOCR中) - 実行中断(中断API + UIボタン)
- 改行後処理モード(
none/paragraph/compact) - ページ表示切替(ドロップダウン +
ALL合算表示) - 表示中結果のコピー(
rawはコピー対象外) - モデル/キャッシュはプロジェクト配下に保存
- Python 3.10+
- Windows または Linux/macOS
- CUDA使用時は対応GPU + ドライバ
run.batchmod +x run.sh
./run.sh起動後:
- UI:
http://localhost:8000/ - API Docs:
http://localhost:8000/docs
補足:
run.sh/run.batは初回のみ依存関係をインストールし、以後は既存.venvを再利用します- 依存を入れ直したい場合は
FORCE_INSTALL=1を指定して起動します - 開発版
transformersが必要な場合のみUSE_TRANSFORMERS_DEV=1を指定してください TORCH_CHANNEL/INSTALL_LAYOUT_DEPS/USE_TRANSFORMERS_DEVを変更した場合も、反映にはFORCE_INSTALL=1が必要です
プロジェクト直下に .env を置くと、run.sh / run.bat 起動時に読み込みます。
例:
HOST=0.0.0.0
PORT=9000
TORCH_CHANNEL=cu126主な設定値:
HOST: バインドアドレス(既定0.0.0.0)PORT: 起動ポート(既定8000)TORCH_CHANNEL: PyTorch配布チャネル(例cu126,cpu)FORCE_INSTALL:1で依存関係を再インストールINSTALL_LAYOUT_DEPS: 既定0。1で PaddleOCR 系の追加インストールを有効化USE_TRANSFORMERS_DEV:1でtransformersを GitHub 開発版に置き換えPRELOAD_MODEL:1/0。0のとき起動時にモデルを事前ロードせず、初回推論時にロードCORS_ALLOW_ORIGINS: カンマ区切りの許可Origin一覧。未指定時は localhost 系のみ許可PROGRESS_TTL_SECONDS: 実行中 progress 情報の保持秒数TERMINAL_PROGRESS_TTL_SECONDS:done/error/canceled状態の保持秒数
アプリ本体の依存定義は requirements.txt にあります。
PyTorch は環境依存のため launcher / scripts/install.* 側で TORCH_CHANNEL に応じてインストールします。
- 通常: PyPI の
transformers - 必要時のみ:
USE_TRANSFORMERS_DEV=1で GitHub 開発版transformers - レイアウト依存: 既定では入れません。必要な場合だけ
INSTALL_LAYOUT_DEPS=1
モデルキャッシュはプロジェクト内に保存されます。
models/hf_cachemodels/hf_home
環境変数 GLM_MODEL_CACHE で明示可能です。
CUDA可否やモデルID、キャッシュディレクトリを返します。
マルチパートフォームでOCR実行。
フォーム項目:
file(required): 画像/PDFdevice:auto/cuda/cpudpi: PDFレンダリングDPItask:text/table/formula/extract_jsonlinebreak_mode:none/paragraph/compactschema:task=extract_jsonのとき必須max_new_tokenstemperatureuse_layout:true/falselayout_backend:ppdoclayoutv3/nonereading_order:auto/ltr_ttb/rtl_ttb/vertical_rlregion_padding: layout OCR 時の領域余白max_regions: 1ページあたりの領域処理上限region_parallelism: layout OCR 時の並列度。現状は1推奨include_layout_preview: layout preview画像をレスポンスに含めるかrequest_id(任意。未指定時は自動採番)
補足:
task=extract_jsonは現状use_layout=trueをサポートしていません。指定すると400を返しますinclude_layout_preview=trueは便利ですが、多ページPDFではレスポンスが大きくなりますregion_parallelismを上げても、モデル生成自体は安全のため直列化されていますlinebreak_modeは主にtextタスク向けです。table/formula/extract_jsonでは出力保全を優先します
進捗状態を取得します。 一定時間経過後の古い進捗状態は自動削除されます。
中断要求を送信します。
生成中はトークン生成ステップ単位で停止判定します。
- このプロジェクト:
LICENSE(MIT) - サードパーティ情報:
THIRD_PARTY_NOTICES.md
