ふぁメモ

主に技術系のメモをしたいけどやっぱり適当日記。たまにPHPコード載ってるけどメモ書き程度のスクリプトなのでそのまま使っちゃダメ。

GLM-OCRでOCRチャットボットを作る( open-webui + ollama )

GLM-OCRが軽快で日本語もいけるのでいつでも使えるようにしてみたメモ

導入

  1. ollamaをインストール (Windows版、exeファイル)
  2. モデル検索してglm-ocrを入れる。適当にメッセージを打ってロードしておく。(初回から画像入れるとvision対応してないとか言われるけど対応している)
  3. open-webuiを導入
python -m venv venv_openwebui
venv_openwebui\Scripts\activate.bat
pip install open-webui
open-webui.exe serve --port 18080

あれ、なんか導入ずいぶん簡単になってるんだな。以前はもっと大変だったような。

初期設定

http://localhost:18080/ (↑のportで指定したポート) 開いて管理者ユーザ登録。

起動用バッチを作る

open-webui.bat

cd 【venv設置フォルダ】
call venv_openwebui\Scripts\activate.bat
open-webui.exe serve --port 18080
deactivate.bat

※open-webuiとollamaは同じPC内にあるのでollamaのExpose Ollama to the network設定は不要

※サーバ終了は Ctrl + C でいけるはずなのだけど効かないことがあるのでその時はターミナルを閉じる

他のPCから使う

各PCにtailscaleを導入済なので http://マシン名:設定ポート/ で繋がる。外部公開はしない。

システムプロンプト

ぺぺっと画像貼り付けて「ocr」とか入れるだけでテキスト抽出してくれるけど、プレーンテキストだと改行が入ってなかったりするのでMarkdownをデフォルトにする。 「markdown」とか入れるとなぜかHTMLで返ってくるので、open-webuiのチャットコントロールシステムプロンプトを設定する。

You are an OCR engine. Extract the text from the image accurately.

Output rules:
- Output must be Markdown syntax ONLY (headings, lists, and GitHub-flavored Markdown tables are allowed)
- DO NOT output any HTML tags (e.g., <br>, <p>, <div>, <span>, <table>, <tr>, <td>)
- Use real newline characters for line breaks (no <br>)
- No preface, no explanations. Output only the extracted content.

Image: (attach image)

(↑のプロンプトはChatGPTで作成)

チャットコントロールからシステムプロンプト

しかしここは新しいチャットを開く度に毎回入力しなくてはならず、同じチャットを使い続けていると5メッセージ目くらいから反応がおかしくなってしまう。固定のGPTやGemみたいなのを作るにはどうすればいいのだろう…。後で調べよう

ワークスペースのプロンプトを設定してみる。

ワークスペースのプロンプト

どうやって呼び出せばいいのかわからない。

プロンプトの最初に短縮キーワードとして/ocrを入れればいいのか…? なんだかうまくいってないような…

フォルダーに設定してみる

フォルダーのプロンプト

こっちはうまくいってる気がする…。

しかしMarkdownにならないことが度々ある。性能の問題なのか何なのか…。


余談

ollamaが勝手にWindows起動時に自動起動にされてスタートアップの有効無効設定がないのが感じ悪い。

タスクマネージャーのスタートアップアプリから無効にしておけば自動起動は切れるが…

起動時はターミナルから

ollama serve

インタラクティブシェルは Ctrl+D/bye で終了 )

とか

ollama run glm-ocr:latest
ollama stop glm-ocr:latest

とかで起動/終了できるが終了しても本体は常駐し続けてしまう。

プロセスkillする以外に止める方法がない。


「パソコンの画面でアニメのエンディングロールを見ながらスクリーンショットOCRにかけてスタッフ名をテキストに起こしているいるイラスト」(nano banana pro)


追記

なんか良さげなの作ってる人がいた

note.com https://github.com/ponpaku/GLM-OCR-server