以下の内容はhttps://touch-sp.hatenablog.com/entry/2025/06/12/083005より取得しました。


lmstuidioというPythonライブラリを使ってOCRを作ってみる。

はじめに

以前LM StudioとGraidoを組み合わせてOCRアプリを作りました。
touch-sp.hatenablog.com
lmstudioというPythonライブラリを使うともっと簡単に実現可能でした。

Pythonスクリプト

import lmstudio as lms
import gradio as gr
import os

# モデルの初期化
model = lms.llm("gemma-3-12b-it-qat")

def extract_text(image_path: str):
    """
    画像からテキストを抽出する関数
    """
    try:
        # 画像ファイルが存在するかチェック
        if not os.path.exists(image_path):
            yield "エラー: 画像ファイルが見つかりません。"
            return
        
        # 画像の準備
        image_handle = lms.prepare_image(image_path)
        
        # チャットの初期化
        chat = lms.Chat("あなたは優秀なAIアシスタントです。")
        
        # ユーザーメッセージの追加
        chat.add_user_message(
            "画像からテキストを抽出して下さい。回答は抽出したテキストのみとして下さい。",
            images=[image_handle]
        )
        
        # ストリーミングレスポンスの処理
        result = ""
        for fragment in model.respond_stream(chat):
            result += fragment.content
            yield result
            
    except Exception as e:
        yield f"エラーが発生しました: {str(e)}"

# Gradioインターフェースの作成
with gr.Blocks(title="画像テキスト抽出アプリ") as demo:
    gr.Markdown("# 画像からテキスト抽出")
    gr.Markdown("画像をアップロードして、その中に含まれるテキストを抽出します。")
    
    gr.Interface(
        fn=extract_text,
        inputs=gr.Image(
            type="filepath",
            label="画像をアップロード"
        ),
        outputs=gr.Textbox(
            lines=10,
            max_lines=40,
            show_copy_button=True,
            label="抽出されたテキスト"
        ),
        flagging_mode="never"
    )

if __name__ == "__main__":
    demo.launch(share=False)

注意点

事前にLM Studioでサーバーを立てておく必要があります。

その方法はこちら。
touch-sp.hatenablog.com





以上の内容はhttps://touch-sp.hatenablog.com/entry/2025/06/12/083005より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14