Pythonスクリプト
import ollama import gradio as gr def extract_text(filepath: str): """ 画像からテキストを抽出する関数(ストリーミング対応) """ if not filepath: yield "画像がアップロードされていません。" return try: # Ollamaでテキスト抽出(ストリーミング) stream = ollama.chat( model="gemma3:12b", messages=[ { "role": "system", "content": "あなたは優秀なAIアシスタントです。" }, { "role": "user", "content": "画像からテキストを抽出して下さい。回答は抽出したテキストのみとして下さい。", "images": [filepath], } ], stream=True ) # ストリームからテキストを順次出力 result = "" for chunk in stream: if chunk.message.content: result += chunk.message.content yield result # 結果が空の場合 if not result.strip(): yield "テキストが検出されませんでした。" except Exception as e: yield f"エラーが発生しました: {str(e)}" # Gradioインターフェースの作成 with gr.Blocks(title="画像テキスト抽出 - Ollama OCR") as demo: gr.Markdown("# 画像テキスト抽出ツール") gr.Markdown("Ollama (gemma3:12b) を使用して画像からテキストを抽出します。") gr.Interface( fn=extract_text, inputs=gr.Image( label="画像をアップロード", type="filepath" ), outputs=gr.Textbox( label="抽出されたテキスト", lines=10, max_lines=40, show_copy_button=True ), flagging_mode="never" ) gr.Markdown(""" ### 注意事項 - Ollama サーバーが起動していることを確認してください ### 必要なライブラリ ```bash pip install gradio ollama ``` """) if __name__ == "__main__": demo.launch(share=False)
ライブラリのインストール
pip install gradio ollama