GLM-OCR

GLM-OCRはオープンな(MITライセンスの)OCRモデルです。Pythonで簡単に使えます。日本語の縦書きにも対応しています。

動かすにはPyTorchとTransformersが必要です(pip install --upgrade torch transformers)。後者は最新のものを入れてもエラーになる場合は pip install git+https://github.com/huggingface/transformers.git で開発版を入れます。

from transformers import AutoProcessor, AutoModelForImageTextToText
import torch

MODEL_PATH = "zai-org/GLM-OCR"
processor = AutoProcessor.from_pretrained(MODEL_PATH)
model = AutoModelForImageTextToText.from_pretrained(
    pretrained_model_name_or_path=MODEL_PATH,
    torch_dtype="auto",
    device_map="auto",
)

url = "画像ファイルへのパス"

messages = [
    {
        "role": "user",
        "content": [
            { "type": "image", "url": url },
            { "type": "text", "text": "Text Recognition:" },
        ],
    }
]
inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt"
).to(model.device)
inputs.pop("token_type_ids", None)
generated_ids = model.generate(**inputs, max_new_tokens=8192)
output_text = processor.decode(
    generated_ids[0][inputs["input_ids"].shape[1]:],
    skip_special_tokens=True
)
print(output_text)

Last modified: