ホームページ >テクノロジー周辺機器 >AI >Paligemma 2ミックス:デモOCRプロジェクトを備えたガイド
Paligemma 2 Mixは、Googleが開発したマルチモーダルAIモデルです。これは、PALIGEMMA Vision Language Model(VLM)の改善されたバージョンであり、Siglip VisionモデルとGemma 2言語モデルの高度な機能を統合しています。 このチュートリアルでは、Paligemma 2ミックスを使用してAI搭載の請求書スキャナーと支出アナライザーを構築する方法を説明します。
請求書の領収書から費用の抽出と分類
キー情報を取得するために光学文字認識(OCR)を実行します。用に設計されています
画像と短いビデオキャプション:静的画像と短いビデオの正確でコンテキスト対応のキャプションを生成します。
視覚的な質問応答(VQA):視覚コンテンツに基づいて画像の分析とテキストベースの質問に答える。光学文字認識(OCR):画像からテキストを抽出して解釈し、ドキュメント、領収書、スキャンされた資料に役立ちます。
オブジェクトの検出とセグメンテーション:構造化された分析のために画像内のオブジェクトを識別、ラベル、およびセグメント。
公式リリース記事で、Paligemma 2 Mixモデルに関する詳細情報を見つけることができます。
プロジェクトの概要:Bill ScannerとPaligemma 2 Mixを使用した支出アナライザー
pil
bitsandbytesの量子化は、パフォーマンスを維持しながらメモリの使用量を削減し、限られたGPUリソースで大規模なモデルを実行することを可能にします。この実装では、4ビットの量子化を使用して、メモリ効率をさらに最適化します。
pip install gradio -U bitsandbytes -U transformers -qモデルIDと量子化構成を渡すことにより、変圧器ライブラリからPaligemmamaforConditionalGenerationクラスを使用してモデルをロードします。同様に、プロセッサをロードします。プロセッサは、テンソルをモデルに渡す前にテンソルに入力を前処理します。
ステップ3:画像処理
import gradio as gr import torch import pandas as pd import matplotlib.pyplot as plt from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor, BitsAndBytesConfig from transformers import BitsAndBytesConfig from PIL import Image import reモデルシャードがロードされたら、画像形式の互換性を維持するためにモデルに渡す前に画像を処理し、均一性を獲得します。画像をRGB形式に変換します:
さて、私たちの画像は推論の準備ができています。
device = "cuda" if torch.cuda.is_available() else "cpu" # Model setup model_id = "google/paligemma2-10b-mix-448" bnb_config = BitsAndBytesConfig( load_in_8bit=True, # Change to load_in_4bit=True for even lower memory usage llm_int8_threshold=6.0, ) # Load model with quantization model = PaliGemmaForConditionalGeneration.from_pretrained( model_id, quantization_config=bnb_config ).eval() # Load processor processor = PaliGemmaProcessor.from_pretrained(model_id) # Print success message print("Model and processor loaded successfully!")ステップ4:パリゲンマとの推論
次に、モデルとの推論を実行するための主な関数を設定します。この関数は、入力画像と質問を取り入れ、それらをプロンプトに組み込み、推論のためにプロセッサを介してモデルに渡します。
ステップ5:キー情報の抽出
pip install gradio -U bitsandbytes -U transformers -q
extract_total_amount()関数は画像を処理して、OCRを使用して領収書から合計金額を抽出します。数値のみを抽出するようにモデルに指示するクエリ(質問)を構築し、Ask_model()関数を呼び出してモデルから応答を生成します。
import gradio as gr import torch import pandas as pd import matplotlib.pyplot as plt from transformers import PaliGemmaForConditionalGeneration, PaliGemmaProcessor, BitsAndBytesConfig from transformers import BitsAndBytesConfig from PIL import Image import re
caltearize_goods()関数は、食料品、衣類、エレクトロニクス、またはその他の事前定義された質問をリストする事前定義された質問でモデルに促すことにより、画像の商品の種類を分類します。 Ask_model()関数は、画像を処理し、テキスト応答を返します。処理された応答が事前に定義された有効なカテゴリのいずれかと一致する場合、そのカテゴリを返します。他に、デフォルトは「その他」カテゴリになります。
ステップ6:情報の分析上記の関数は、異なるカテゴリにわたって支出分布を視覚化するためのパイチャートを作成します。有効な支出データが存在しない場合、「支出データがない」を示すメッセージを含む空白のフィギュアが生成されます。それ以外の場合は、カテゴリのラベルとパーセンテージ値を備えたパイチャートを作成し、比例した整合した視覚化を確保します。
device = "cuda" if torch.cuda.is_available() else "cpu" # Model setup model_id = "google/paligemma2-10b-mix-448" bnb_config = BitsAndBytesConfig( load_in_8bit=True, # Change to load_in_4bit=True for even lower memory usage llm_int8_threshold=6.0, ) # Load model with quantization model = PaliGemmaForConditionalGeneration.from_pretrained( model_id, quantization_config=bnb_config ).eval() # Load processor processor = PaliGemmaProcessor.from_pretrained(model_id) # Print success message print("Model and processor loaded successfully!")ステップ6:複数の請求書を同時に分析します
通常、分析する複数の請求書があるので、すべての請求書を同時に処理する関数を作成しましょう。
ストレージの初期化:結果と画像を保存するためのリストを作成し、合計を0に設定し、カテゴリごとの合計の辞書を定義します。
def ensure_rgb(image: Image.Image) -> Image.Image: if image.mode != "RGB": image = image.convert("RGB") return image各請求書を処理します:
関数は、ユーザー入力をProcess_multiple_bills()関数に接続し、シームレスなデータ抽出と視覚化を確保します。最後に、demo.launch()関数は、リアルタイムインタラクションのためにグレードアプリを開始します。
注:VLMは、数値を抽出するのが難しいと感じているため、結果が誤っている場合があります。たとえば、以下の2番目の請求書の間違った合計額を抽出しました。これは、より大きなモデルを使用するか、単に既存のモデルを微調整することで修正できます。
以上がPaligemma 2ミックス:デモOCRプロジェクトを備えたガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。