Paligemma 2 Mix는 Google에서 개발 한 멀티 모달 AI 모델입니다. Siglip Vision 모델 및 Gemma 2 언어 모델의 고급 기능을 통합하는 Paligemma Vision Language Model (VLM)의 개선 된 버전입니다.
이 튜토리얼에서는 Paligemma 2 Mix를 사용하여 AI 구동 청구서 스캐너를 구축하고 다음을 수행 할 수있는 방법을 설명하는 방법을 설명합니다.
청구서 영수증에서 비용을 추출하고 분류합니다
핵심 정보를 검색하기 위해 광학 문자 인식 (OCR) 수행 ()
제공된 이미지를 기준으로 지출 요약
우리의 초점은 재무 통찰력 도구를 구축하는 데 중점을 두지만이 블로그에서 배운 내용을 사용하여 이미지 세분화, 객체 감지 및 질문 답변과 같은 Paligemma 2 믹스의 다른 사용 사례를 탐색 할 수 있습니다.
Paligemma 2 믹스 란 무엇입니까?
Paligemma 2 Mix는 이미지와 텍스트를 입력으로 처리하고 텍스트 기반 출력을 생성하는 고급 비전 언어 모델 (VLM)입니다. 여러 언어를 지원하면서 다양한 멀티 모달 AI 작업을 처리하도록 설계되었습니다.
paligemma 2는 이미지 및 짧은 비디오 캡션, 시각적 질문 응답, 광학 문자 인식 (OCR), 객체 감지 및 세분화를 포함한 다양한 비전 언어 작업을 위해 설계되었습니다.
-
다이어그램에 사용 된 이미지의 출처 : Google
Paligemma 2 믹스 모델은 다음을 위해 설계되었습니다
-
공식 릴리스 기사에서 Paligemma 2 믹스 모델에 대한 자세한 정보를 찾을 수 있습니다. -
프로젝트 개요 : Paligemma 2 Mix를 사용한 청구서 스캐너 및 소비 분석기
우리가 취할 주요 단계를 간략하게 설명하자 :
데이터 세트로드 및 준비 : 프로세스는 입력으로 영수증 이미지를로드하고 준비하여 시작됩니다.
Paligemma 2 믹스 모델 초기화 : 비전 언어 작업 처리를위한 모델을 구성하고로드합니다.
입력 이미지 프로세스 : 그런 다음 이미지를 적절한 형식 (RGB)으로 변환하고 분석을 준비하십시오.
<: :> 주요 정보 추출 : OCR (Optical Character Recognition)을 수행하여 총 금액을 검색합니다.
비용 분류 : 구매를 식료품, 의류, 전자 제품 및 기타와 같은 범주로 분류합니다.
지출 통찰력 생성 : 분류 된 비용을 요약하고 지출 분배 차트를 생성합니다.
대화식 Gradio 인터페이스 구축 : 마지막으로, 사용자가 여러 청구서를 업로드하고 데이터를 추출하고 시각적으로 지출을 분석 할 수있는 UI를 만듭니다.
-
1 단계 : 전제 조건
시작하기 전에 다음 도구와 라이브러리가 설치되어 있는지 확인합시다.
파이썬 3.8
토치
- 변압기
pil
matplotlib
- gradio
필요한 종속성을 설치하려면 다음 명령을 실행하십시오
-
위의 종속성이 설치되면 다음 가져 오기 명령을 실행하십시오.
2 단계 : 모델 초기화
우리는 성능을 최적화하기 위해 양자화로 Paligemma 2 믹스 모델을 구성하고로드합니다. 이 데모의 경우 448 x 448 입력 이미지 해상도의 10B 매개 변수 모델을 사용합니다. 이 모델을 실행하려면 40GB 메모리 (Colab 구성)가있는 최소 T4 GPU가 필요합니다. -
우리는 모델 ID 및 양자화 구성을 전달하여 변압기 라이브러리에서 PaligemMaforConditionAlgeneration 클래스를 사용하여 모델을로드합니다. 마찬가지로, 우리는 프로세서를로드하여 모델로 전달하기 전에 입력을 텐서로 전처리합니다.
3 단계 : 이미지 처리
일단 모델 파편이로드되면 이미지 형식 호환성을 유지하고 균일 성을 유지하기 위해 모델로 전달하기 전에 이미지를 처리합니다. 이미지를 RGB 형식으로 변환합니다
이제, 우리의 이미지는 추론 준비가되었습니다.
4 단계 : Paligemma와의 추론
이제 모델과의 추론을 실행하기위한 주요 기능을 설정했습니다. 이 기능은 입력 이미지와 질문을 사용하여 프롬프트에 통합하여 추론을 위해 프로세서를 통해 모델로 전달합니다.
5 단계 : 주요 정보 추출
이제 주요 기능을 준비 했으므로 이미지에서 주요 매개 변수를 추출하는 작업을 수행 할 것입니다.이 경우 총 금액 및 상품 범주입니다.pip install gradio -U bitsandbytes -U transformers -q
로그인 후 복사
extract_total_amount () 함수는 OCR을 사용하여 영수증에서 총 금액을 추출하기 위해 이미지를 처리합니다. 모델에 숫자 값 만 추출하도록 지시하는 쿼리 (Question)를 구성 한 다음 ASK_Model () 함수를 호출하여 모델에서 응답을 생성합니다.
Categorize_goods () 함수는 식료품, 의류, 전자 제품 또는 기타 등의 범주를 목록하는 사전 정의 된 질문으로 모델을 프롬프트하여 이미지의 상품 유형을 분류합니다. Ask_Model () 함수는 이미지를 처리하고 텍스트 응답을 반환합니다. 처리 된 응답이 사전 정의 된 유효한 범주와 일치하면 해당 범주를 반환합니다. 기본적으로 기본적으로 "기타"범주로 표시됩니다.
6 단계 : 정보 분석
우리는 모든 주요 함수를 준비하고 있으므로 출력을 분석해 봅시다.
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 단계 : 여러 청구서를 동시에 분석하는
우리는 일반적으로 분석 할 여러 청구서가 있으므로 모든 청구서를 동시에 처리 할 수있는 기능을 작성해 봅시다.
한 번에 여러 청구서를 분석하려면 다음 단계를 수행합니다.
<: :> Storage 초기화 : 결과 및 이미지 저장을위한 목록을 작성하고, Total_spending을 0으로 설정하고, 카테고리-총계에 대한 사전을 정의합니다.
<:> 각 청구서를 처리하십시오 :
이미지를 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!")
로그인 후 복사
통찰력 생성 : 우리는 총 지출 요약과 함께 지출 분포 파이 차트를 만듭니다.
반환 결과 : 마지막으로, 우리는 이미지 목록, 청구서 요약의 데이터 프레임, 총 지출 요약 및 지출 차트를 반환합니다.
7 단계 : Gradio 인터페이스를 구축하십시오
이제 모든 주요 논리 기능이 있습니다. 다음으로, 우리는 Gradio와 함께 대화식 UI를 구축하는 작업을 수행합니다
위의 코드는 여러 이미지 용 파일 업 로더와 처리를 트리거하기 위해 제출 버튼으로 구조화 된 Gradio UI를 만듭니다. 제출시, 업로드 된 청구서 이미지가 갤러리에 표시되고 추출 된 데이터가 표에 표시되며, 총 지출은 텍스트에 요약되며 지출 분포 원형 차트가 생성됩니다. 이 기능은 사용자 입력을 Process_Multiple_Bills () 함수에 연결하여 원활한 데이터 추출 및 시각화를 보장합니다. 마지막으로 Demo.launch () 함수는 실시간 상호 작용을 위해 Gradio 앱을 시작합니다.
나는 또한 두 개의 이미지 기반 청구서 (아마존 쇼핑 송장) 로이 데모를 시도하고 다음과 같은 결과를 얻었습니다.
참고 : VLMS는 숫자를 추출하기가 어렵다는 것을 알게되어 때때로 잘못된 결과를 초래할 수 있습니다. 예를 들어, 아래 두 번째 청구서에 대한 잘못된 총 금액을 추출했습니다. 이것은 더 큰 모델을 사용하거나 기존 모델을 단순히 미세 조정하는 데 수정할 수 있습니다.
결론
이 튜토리얼에서는 Paligemma 2 Mix를 사용하여 AI 전원 다중 청구서 스캐너를 구축하여 영수증에서 비용을 추출하고 분류하는 데 도움이 될 수 있습니다. 우리는 Paligemma 2 Mix의 비전 언어 기능을 사용하여 OCR 및 분류 기능을 사용하여 지출 통찰력을 쉽게 분석했습니다. 이 튜토리얼을 자신의 유스 케이스에 조정하는 것이 좋습니다.
위 내용은 Paligemma 2 믹스 : Demo OCR 프로젝트가있는 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!