🚀 mychen76/mistral7b_ocr_to_json_v1
このモデルは、OCRテキストをJSONオブジェクトに変換するタスクに特化して微調整された大規模言語モデル(LLM)です。Mistral-7B-v0.1をベースにしており、テストされたすべてのベンチマークでLlama 2 13Bを上回る性能を発揮します。
🚀 クイックスタート
まずは、モデルを直接ロードする方法を紹介します。以下のコードを使用して、モデルとトークナイザーをロードできます。
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("mychen76/mistral7b_ocr_to_json_v1")
model = AutoModelForCausalLM.from_pretrained("mychen76/mistral7b_ocr_to_json_v1")
prompt=f"""### Instruction:
You are POS receipt data expert, parse, detect, recognize and convert following receipt OCR image result into structure receipt data object.
Don't make up value not in the Input. Output must be a well-formed JSON object.```json
### Input:
{receipt_boxes}
### Output:
"""
with torch.inference_mode():
inputs = tokenizer(prompt,return_tensors="pt",truncation=True).to(device)
outputs = model.generate(**inputs, max_new_tokens=512)
result_text = tokenizer.batch_decode(outputs)[0]
print(result_text)
✨ 主な機能
- OCRテキストからJSONオブジェクトへの変換:レシートや請求書のOCR画像から得られたテキストを構造化されたJSONオブジェクトに変換します。
- 高性能:Mistral-7B-v0.1をベースにしているため、テストされたすべてのベンチマークでLlama 2 13Bを上回る性能を発揮します。
📦 インストール
モデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
以下は、レシート画像をOCRしてJSONオブジェクトに変換する基本的な使用例です。
from paddleocr import PaddleOCR, draw_ocr
from ast import literal_eval
import json
paddleocr = PaddleOCR(lang="en",ocr_version="PP-OCRv4",show_log = False,use_gpu=True)
def paddle_scan(paddleocr,img_path_or_nparray):
result = paddleocr.ocr(img_path_or_nparray,cls=True)
result = result[0]
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
return txts, result
receipt_texts, receipt_boxes = paddle_scan(paddleocr,receipt_image_array)
print(50*"--","\ntext only:\n",receipt_texts)
print(50*"--","\nocr boxes:\n",receipt_boxes)
高度な使用法
モデルを4ビット量子化してロードすることで、GPUメモリの使用量を削減できます。以下は、4ビット量子化でモデルをロードする例です。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig, BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
llm_int8_enable_fp32_cpu_offload=True,
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
device_map = {
"transformer.word_embeddings": 0,
"transformer.word_embeddings_layernorm": 0,
"lm_head": 0,
"transformer.h": 0,
"transformer.ln_f": 0,
"model.embed_tokens": 0,
"model.layers":0,
"model.norm":0
}
device = "cuda" if torch.cuda.is_available() else "cpu"
model_id="mychen76/mistral7b_ocr_to_json_v1"
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
torch_dtype=torch.float16,
quantization_config=bnb_config,
device_map=device_map)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
📚 ドキュメント
モデルの詳細
- モデルアーキテクチャ:mychen76/mistral7b_ocr_to_json_v1は、Mistral-7B-v0.1をベースにした大規模言語モデルです。
- 微調整データセット:mychen76/invoices-and-receipts_ocr_v1
関連リンク
- ChatML形式のモデルを探している場合:リンク
- レシート画像をJSONに変換するビジョンモデルを探している場合:リンク
ユースケースノートブック
英語のレシート
- model_id="mychen76/mistral7b_ocr_to_json_v1":ノートブック
- model_id: mychen76/mistral_ocr2json_v3_chatml:ノートブック
ドイツ語のレシート
- model_id="mychen76/mistral7b_ocr_to_json_v1"
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。