如何使用Mistral OCR作為您的下一個RAG模型

如何使用Mistral OCR作為您的下一個RAG模型

文章目录

  • 瞭解RAG及其侷限性
  • Mistral OCR是什麼?它有何獨特之處?
  • Mistral OCR如何增強RAG
  • Mistral OCR實戰指南:分步詳解
  • 前提條件:訪問API
  • 步驟 1:匯入依賴項
  • 步驟 2:設定Mistral OCR客戶端
  • 步驟 3:定義語言處理
  • 步驟 4:定義結構化輸出模型
  • 步驟 5:使用OCR處理影像
  • 步驟 6:執行OCR並檢視結果
  • Mistral、Gemini 2.0 Flash和GPT-4o對比
  • 比較分析
  • Mistral OCR效能基準測試
  • 1. 標準基準測試
  • 2. 按語言劃分的基準測試
  • Mistral OCR的未來應用
  • 小結

如何使用Mistral OCR作為您的下一個RAG模型

檢索增強生成 (RAG) 系統已成為人工智慧模型不可或缺的一部分,使其能夠訪問海量相關資料並提供更智慧、更具上下文感知能力的響應。然而,RAG 系統的功能主要侷限於數字文字,忽略了掃描文件、影像和手寫筆記等多模態格式中的寶貴資訊。Mistral OCR 透過將複雜文件無縫整合到智慧檢索系統中,突破了這一侷限,擴充套件了可用知識的範圍。這一進步增強了人工智慧互動,使資訊更易於獲取、更全面,並適用於各種實際場景。本文將探討 Mistral OCR 的特性和應用,並分析其對 RAG 系統的影響。

瞭解RAG及其侷限性

RAG 模型透過檢索相關文件並利用這些文件生成響應來執行。雖然它們在處理大型文字庫方面表現出色,但在處理非文字資料時卻力不從心。原因如下:

  • 無法解讀影像、公式和表格:許多關鍵文件包含表格和公式形式的結構化資料,而傳統的 RAG 模型無法理解這些資料。
  • OCR 提取文字的上下文丟失:即使從掃描文件中提取文字,如果忽略其結構和佈局,其含義也常常會失真。
  • 處理多模態內容的挑戰:大多數傳統 RAG 系統無法以有意義的方式組合視覺和文字元素。
  • 跨行業適用性有限:研究、法律和金融等行業依賴於複雜的文件,這些文件需要的不僅僅是基於文字的理解。

如果沒有一種有效的方法來從各種格式中提取和構建資訊,RAG 就無法完善。而 Mistral OCR 的出現改變了這一切。

Mistral OCR是什麼?它有何獨特之處?

Mistral OCR 是一款先進的光學字元識別 (OCR) API,其功能遠不止提取文字。與傳統的 OCR 工具不同,它能夠識別文件的結構和上下文,確保檢索到的資訊既準確又有意義。它兼具高精度和高效能,是輕鬆處理大量文件的理想之選。以下是它的主要優勢:

Mistral OCR是什麼?它有何獨特之處?

  • 深度文件理解:它不僅能識別和提取文字,還能識別和提取表格、圖表、公式和交錯影像,從而保持文件的完整性。
  • 高速處理:Mistral OCR 單節點處理速度高達每分鐘 2000 頁,專為高吞吐量環境而設計。
  • 文件提示功能:此功能允許使用者將整個文件視為提示,從而實現精確且結構化的資訊提取。
  • 結構化輸出格式:提取的內容可以格式化為 JSON,更易於整合到工作流程和 AI 應用中。
  • 安全靈活的部署:對於擁有嚴格隱私政策的組織,Mistral OCR 提供自託管選項,確保資料安全和合規性。

這些功能使 Mistral OCR 成為將非結構化文件轉換為 AI 可用知識庫的強大工具。

Mistral OCR如何增強RAG

將 Mistral OCR 與 RAG 整合,開啟知識檢索的新維度。它對系統的改進方式如下:

Mistral OCR如何增強RAG

  • 將 RAG 擴充套件到多模態資料:Mistral OCR 透過處理掃描文件、影像和 PDF,使 RAG 模型能夠處理文字以外的資訊。
  • 保留文件結構以獲得更佳的上下文:Mistral OCR 能夠保持文字、影像和結構化元素之間的關係,確保提取的文字含義不會丟失。
  • 加速知識檢索:高速處理海量文件庫的能力確保 AI 驅動的搜尋和分析保持高效和最新。
  • 利用 AI 就緒資料賦能各行業:無論是法律檔案、科學研究還是客戶支援文件,Mistral OCR 都能幫助 AI 系統更輕鬆地訪問富含知識的文件。
  • 實現與 AI 管道的無縫整合:結構化輸出使 RAG 系統能夠將提取的資訊無縫整合到各種 AI 應用程式中。

Mistral OCR實戰指南:分步詳解

Mistral OCR 是一款功能強大的工具,可用於從影像和掃描文件中提取結構化資訊。在本節中,我們將逐步介紹一個利用 Mistral OCR 處理影像並返回結構化資料的 Python 指令碼。

前提條件:訪問API

在開始測試 Mistral OCR 的步驟之前,我們先來看看如何生成所需的 API 金鑰。

1. Mistral API金鑰

要獲取 Mistral API 金鑰,請訪問 Mistral API 並註冊一個 Mistral 帳戶。如果您已有帳戶,只需登入即可。

登入後,點選“Create new key”以生成新金鑰。

Mistral API金鑰

2. OpenAI API金鑰

要獲取 OpenAI API 金鑰,請訪問 OpenAI 網站並登入您的帳戶。如果您還沒有 OpenAI 帳戶,請註冊一個。

登入後,點選“Create new secret key”生成新金鑰。

OpenAI API金鑰

3. Gemini API金鑰

要獲取 Gemini API 金鑰,請訪問 Google AI Studio 網站並登入您的 Google 帳戶。如果您還沒有帳戶,請註冊一個。

登入後,導航至 API 金鑰部分,然後點選“Create API Key”以建立新金鑰。

Gemini API金鑰

一切準備就緒,讓我們開始實施吧。

步驟 1:匯入依賴項

該指令碼匯入必要的庫,包括:

  • 來自“pydantic”的 Enum 和 BaseModel
  • 用於處理檔案路徑的 Path
  • 用於影像檔案編碼的 base64
  • 用於將語言程式碼對映到其完整名稱的“pycountry”
  • 用於與 OCR API 互動的 Mistral SDK
from enum import Enum
from pathlib import Path
from pydantic import BaseModel
import base64
import pycountry
from mistralai import Mistral

步驟 2:設定Mistral OCR客戶端

該指令碼使用 API 金鑰初始化 Mistral OCR 客戶端:

api_key = "API_KEY"
client = Mistral(api_key=api_key)
languages = {lang.alpha_2: lang.name for lang in pycountry.languages if hasattr(lang, 'alpha_2')}

請務必將“API_KEY”替換為您的實際 API 金鑰。

步驟 3:定義語言處理

為確保提取的文字帶有正確的語言資訊,指令碼使用“pycountry”建立一個字典,將語言程式碼(例如,en 代表英語)對映到完整的名稱。

languages = {lang.alpha_2: lang.name for lang in pycountry.languages if hasattr(lang, 'alpha_2')}
class LanguageMeta(Enum.__class__):
def __new__(metacls, cls, bases, classdict):
for code, name in languages.items():
classdict[name.upper().replace(' ', '_')] = name
return super().__new__(metacls, cls, bases, classdict)
class Language(Enum, metaclass=LanguageMeta):
pass

列舉類(Language)動態生成結構化輸出的語言標籤。

步驟 4:定義結構化輸出模型

使用“pydantic”建立 StructuredOCR 類。該類定義了提取的 OCR 資料的格式,包括:

  • file_name:處理後的影像檔名。
  • topics:從影像中檢測到的主題。
  • languages:識別出的語言。
  • ocr_contents:以結構化格式提取的文字。
class StructuredOCR(BaseModel):
file_name: str
topics: list[str]
languages: list[Language]
ocr_contents: dict
print(StructuredOCR.schema_json())

步驟 5:使用OCR處理影像

`structured_ocr()` 函式負責核心 OCR 處理流程:

  1. Image Encoding:讀取影像並將其編碼為 base64 字串,以便傳送到 API。
  2. OCR Processing:將影像傳遞給 Mistral OCR,並以 Markdown 格式檢索提取的文字。
  3. Structuring the OCR Output:後續請求將提取的文字轉換為結構化的 JSON 格式。
def structured_ocr(image_path: str) -> StructuredOCR:
image_file = Path(image_path)
assert image_file.is_file(), "The provided image path does not exist."
# Read and encode the image file
encoded_image = base64.b64encode(image_file.read_bytes()).decode()
base64_data_url = f"data:image/jpeg;base64,{encoded_image}"
# Process the image using OCR
image_response = client.ocr.process(document=ImageURLChunk(image_url=base64_data_url), model="mistral-ocr-latest")
image_ocr_markdown = image_response.pages[0].markdown
# Parse the OCR result into a structured JSON response
chat_response = client.chat.parse(
model="pixtral-12b-latest",
messages=[
{
"role": "user",
"content": [
ImageURLChunk(image_url=base64_data_url),
TextChunk(text=(
"This is the image's OCR in markdown:\n"
f"<BEGIN_IMAGE_OCR>\n{image_ocr_markdown}\n<END_IMAGE_OCR>.\n"
"Convert this into a structured JSON response with the OCR contents in a sensible dictionnary."
))
],
},
],
response_format=StructuredOCR,
temperature=0
)
return chat_response.choices[0].message.parsed
image_path = "receipt.png"
structured_response = structured_ocr(image_path)
response_dict = json.loads(structured_response.json())
json_string = json.dumps(response_dict, indent=4)
print(json_string)

輸入影像

購物小票

步驟 6:執行OCR並檢視結果

該指令碼呼叫 structured_ocr() 函式,傳入影像(receipt.png),檢索結構化 OCR 輸出,並將其格式化為 JSON 字串。

image_path = "receipt.png"
structured_response = structured_ocr(image_path)
response_dict = json.loads(structured_response.json())
json_string = json.dumps(response_dict, indent=4)
print(json_string)

這會將提取的資訊以易讀格式列印出來,方便整合到應用程式中。

點選此處檢視完整程式碼。

Mistral、Gemini 2.0 Flash和GPT-4o對比

現在我們已經瞭解了 Mistral OCR 的工作原理,接下來讓我們將其效能與 Gemini 2.0 Flash 和 GPT-4o 進行比較。為了確保比較的一致性和公平性,我們將使用在實踐部分測試 Mistral OCR 時使用的同一張圖片。目標是評估 Mistral、Gemini 2.0 和 GPT-4o 在完全相同的輸入影像上的表現。以下是各模型生成的輸出。

使用 mistral-ocr 的輸出:

以下是我們實踐部分得到的響應。

使用 mistral-ocr 的輸出

使用 gemini-2.0-flash 輸出:

from google import genai
from PIL import Image
# Initialize the GenAI client with your API key
client = genai.Client(api_key="AIzaSyCxpgd6KbNOwqNhMmDxskSY3alcY2NUiM0")
# Open the image file
image_path = "/content/download.png"
image = Image.open(image_path)
# Define the prompt for the model
prompt = "Please extract and provide the text content from the image."
# Generate content using the Gemini model
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=[image, prompt]
)
# Print the extracted text
print(response.text)

使用 gemini-2.0-flash 輸出

使用 gpt-4o 的輸出結果:

我在測試 GPT-4o 時,它無法訪問本地檔案。因此,我提供了一個類似圖片的 URL,以便 GPT 評估其文字提取能力。

from openai import OpenAI
client = OpenAI(api_key="api_key")
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{
"type": "image_url",
"image_url": {
"url": "https://preview.redd.it/11gu042ydlub1.jpg?width=640&crop=smart&auto=webp&s=8cbb551c29e76ecc31210a79a0ef6c179b7609a3",
}
},
],
}
],
max_tokens=300,
)
print(response.choices[0].message.content)

使用 gpt-4o 的輸出結果

比較分析

評估維度 Mistral OCR GPT-4o Gemini 2.0 Flash
API成本 1000頁/美元(批次推理時單位成本處理量翻倍) 5美元/百萬輸入token 0.1美元(支援文字/影像/影片)
處理速度 快速 中高速 中等
模型體積 輕量級 重量級 重量級

Mistral OCR效能基準測試

現在,讓我們來看看 Mistral OCR 在各項基準測試中的表現。

1. 標準基準測試

Mistral OCR 在文件分析領域樹立了新的標杆,在嚴格的基準測試中始終優於其他領先的 OCR 模型。其先進的功能不僅限於簡單的文字提取,還能準確識別和檢索嵌入在文字內容中的影像——這是許多競爭模型難以實現的。

標準基準測試

2. 按語言劃分的基準測試

Mistral OCR 能夠識別、解碼和翻譯來自世界各地數千種語言、文字和字型,樹立了行業標杆。Mistral OCR 可以輕鬆處理各種語言結構,確保翻譯過程中不會遺漏任何資訊,使其成為彌合語言鴻溝的得力助手。

按語言劃分的基準測試

Mistral OCR的未來應用

Mistral OCR 有望透過使複雜文件更易於訪問和操作,從而革新各行各業。以下是一些關鍵應用:

  • 數字化科研:科研機構可利用 Mistral OCR 將科學文章、期刊和技術報告轉換為 AI 相容格式。這能夠加快知識共享,促進更順暢的協作,並改進 AI 輔助的文獻綜述。
  • 保護歷史文化遺產:博物館、圖書館和檔案館中的歷史手稿、藝術品和文化文物不僅能夠更方便地供研究人員和公眾查閱,還能進行長期的數字化儲存。
  • 最佳化客戶服務:企業可以將使用者指南、產品手冊和常見問題解答轉換為結構清晰、可搜尋的知識庫,從而縮短響應時間並提升客戶滿意度。
  • 使設計、教育和法律領域的文獻具備 AI 功能:從工程藍圖到法律協議和教育內容,Mistral OCR 確保關鍵行業文件均被索引,並可隨時訪問,從而實現 AI 驅動的洞察和自動化。

小結

長期以來,隱藏在複雜文件(無論是科學圖表、手寫稿還是結構化報告)中的寶貴知識一直被人工智慧拒之門外。Mistral OCR 改變了這一現狀,它將 RAG 系統從簡單的文字檢索器轉變為能夠真正理解和駕馭各種形式資訊的強大工具。這不僅是技術的進步,更是我們獲取和共享知識方式的突破。Mistral OCR 讓曾經難以處理的文件變得觸手可及,幫助人工智慧彌合資訊與理解之間的鴻溝,使知識比以往任何時候都更容易獲取。

評論留言