首頁 >科技週邊 >人工智慧 >Paligemma 2 Mix:Demo OCR項目的指南

Paligemma 2 Mix:Demo OCR項目的指南

Christopher Nolan
Christopher Nolan原創
2025-02-28 16:32:11823瀏覽

>從賬單收據中提取和分類費用。

    >執行光學特徵識別(OCR)以檢索關鍵信息。
  • >根據提供的圖像總結支出。
  • >我們的重點是構建財務見解工具,但您可以使用此博客中所學的知識來探索其他Paligemma 2 Mix的用例,例如圖像細分,對象檢測和問題答案。
  • >
  • 什麼是paligemma 2混合?
> Paligemma 2 Mix是一種高級視覺語言模型(VLM),將圖像和文本作為輸入處理並生成基於文本的輸出。它旨在在支持多種語言的同時處理各種多模式AI任務。

>

paligemma 2專為各種視覺語言任務而設計,包括圖像和簡短的視頻字幕,視覺問題答案,光學特徵識別(OCR),對象檢測和分割。

>

>圖中使用的圖像的來源:google

paligemma 2混合模型設計用於:> Paligemma 2 Mix:Demo OCR項目的指南

>圖像和簡短視頻字幕:生成靜態圖像和簡短視頻的準確和上下文感知字幕。

>視覺詢問答案(VQA):根據視覺內容分析圖像並回答基於文本的問題。

>光學特徵識別(OCR):從圖像中提取和解釋文本,使其可用於文檔,收據和掃描材料。
    >對象檢測和分割:它在圖像中標識,標籤和片段對象進行結構化分析。
  • >多語言支持:該模型還可以以多種語言以全局應用程序為文本生成和理解。
  • >您可以在官方發行文章中找到有關Paligemma 2混合模型的更多信息。 
  • 項目概述:Bill Scanner和Paligemma 2 Mix
  • 的支出分析儀
  • >讓我們概述我們要採取的主要步驟:
    1. 加載並準備數據集:該過程是從加載和準備收據圖像作為輸入開始的。
    2. >初始化paligemma 2混合模型:我們配置並加載用於處理視覺語言任務的模型。
    3. >進程輸入圖像:然後,將圖像轉換為適當的格式(RGB),並準備它們進行分析。
    4. 提取關鍵信息:執行光學特徵識別(OCR)以檢索總量。
    5. >對費用進行分類:將購買分為雜貨,服裝,電子產品等類別。
    6. >
    7. 生成支出見解:我們總結了分類的費用並生成支出分配圖。
    8. >構建一個交互式gradio接口:最後,我們創建一個UI,用戶可以在其中上傳多個賬單,提取數據並以視覺上的方式分析支出。
    >步驟1:先決條件

    >在開始之前,讓我們確保我們安裝了以下工具和庫:

    python 3.8
    • >火炬
    • 變形金剛
    • pil
    • matplotlib
    • gradio
    • 運行以下命令以安裝必要的依賴項:
    >

    一旦安裝了上述依賴項,請運行以下導入命令:>
    pip install gradio -U bitsandbytes -U transformers -q

    >步驟2:模型初始化

    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
    >我們使用量化配置並加載Paligemma 2混合模型以優化性能。對於此演示,我們將使用448 x 448輸入圖像分辨率的10B參數模型。您需要至少具有40GB內存(COLAB配置)的T4 GPU來運行此模型。 

    > bitsandbytes量化有助於減少記憶使用量的同時保持性能,從而可以在有限的GPU資源上運行大型模型。在此實現中,我們使用4位量化來進一步優化內存效率。

    >我們通過傳遞模型ID和量化配置,使用來自變形金剛庫的PaligemmaforCongengergeneration類加載模型。同樣,我們加載處理器,該處理器將輸入預處理到張量中之前,然後將其傳遞給模型。
    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!")
    步驟3:圖像處理

    >裝載模型後,我們將圖像傳遞到模型之前對圖像進行處理以維護圖像格式的兼容性和增益均勻性。我們將圖像轉換為RGB格式:

    現在,我們的圖像已準備好推理。

    >

    >步驟4:推理使用paligemma

    def ensure_rgb(image: Image.Image) -> Image.Image:
        if image.mode != "RGB":
            image = image.convert("RGB")
        return image
    >現在,我們設置了用於使用模型運行推斷的主要功能。此功能將帶有輸入圖像和問題,將它們整合到提示中,然後通過處理器將它們傳遞給模型。

    >步驟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
    步驟6:分析信息

我們已經準備好所有關鍵功能,所以讓我們分析輸出。 >

>上面的功能創建了一個餅圖,以可視化不同類別的支出分佈。如果不存在有效的支出數據,它將生成一個空白的圖形,並帶有表示“無支出數據”的消息。否則,它將創建帶有類別標籤和百分比值的餅圖,確保比例且良好的可視化。

步驟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!")

我們通常有多個賬單要分析,因此讓我們創建一個函數來同時處理所有賬單。

用於一次分析多個賬單,我們執行以下步驟:>

初始化存儲:我們創建用於存儲結果和圖像的列表,將total_spending設置為0,並為類別總計定義字典。

def ensure_rgb(image: Image.Image) -> Image.Image:
    if image.mode != "RGB":
        image = image.convert("RGB")
    return image
處理每個賬單:

  1. 打開並將圖像轉換為rgb。
  2. >將圖像附加到列表中。
從收據中提取總金額。
  • 在收據中對商品進行分類。
  • 更新總支出和類別的總計。
  • >將提取的數據存儲在結果列表中。
  • 生成洞察力:我們創建一個支出分配餅圖以及總支出的摘要。
  • 返回結果:最後,我們返回圖像列表,帳單摘要的數據框架,總支出摘要和支出圖表。
>步驟7:構建Gradio接口
  1. >現在,我們已經制定了所有關鍵邏輯函數。接下來,我們致力於使用Gradio構建Interactive UI。
  2. >上面的代碼創建一個結構化的gradio ui,其中具有用於多個圖像的文件上載程序,並為觸發處理。提交後,上傳帳單圖像顯示在畫廊中,提取的數據顯示在表中,總支出總結在文本中,並生成了支出分配餅圖。 
  3. 該功能將用戶輸入連接到process_multiple_bills()函數,以確保無縫數據提取和可視化。最後,demo.launch()函數啟動了用於實時互動的Gradio應用程序。

    >

    Paligemma 2 Mix:Demo OCR項目的指南

    >我還嘗試了兩個基於圖像的賬單(亞馬遜購物發票)的演示,並得到以下結果。

    注意:VLMS發現很難提取數字,這有時可能導致結果不正確。例如,它提取了以下第二賬單的錯誤總金額。這是可以使用較大型號或簡單地對現有模型進行微調來糾正。

    >

    Paligemma 2 Mix:Demo OCR項目的指南

    Paligemma 2 Mix:Demo OCR項目的指南

    結論

    在本教程中,我們使用Paligemma 2 Mix構建了一個AI驅動的多個Bill Scanner,這可以幫助我們從收據中提取和分類支出。我們使用Paligemma 2 Mix的視覺語言功能來進行OCR和分類,以毫不費力地分析支出見解。我鼓勵您將本教程適應您自己的用例。 

以上是Paligemma 2 Mix:Demo OCR項目的指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn