使用Llama 3.2-Vision大模型,搭建本地Ollama OCR應(yīng)用 原創(chuàng)
用Python和Ollama的Llama 3.2-Vision模型搭建自己的OCR應(yīng)用。
?光學(xué)字符識別技術(shù),簡稱OCR,目前是數(shù)字化印刷文本和提取圖像信息的核心手段,其重要性正日益凸顯。如今,有了AI的加持,尤其是像Llama 3.2-Vision這樣的模型,OCR變得更加強(qiáng)大。本文教會大家用Python和Ollama的Llama 3.2-Vision模型,一步步搭建起自己的OCR應(yīng)用。
先決條件
在開始之前,先確保已準(zhǔn)備好以下條件:
- 一臺安裝了Windows、macOS或Linux的電腦。
- 穩(wěn)定的互聯(lián)網(wǎng)連接,用于下載必要的包和模型。
- 對Python編程的基本了解。
- 系統(tǒng)上安裝了Python(最好是3.7或更高版本)。
步驟1:安裝Ollama
Ollama是一個(gè)能讓你在本地運(yùn)行多模態(tài)模型的平臺。安裝步驟如下:
- 下載Ollama:訪問Ollama官方網(wǎng)站,下載適合你操作系統(tǒng)的安裝包。
- 安裝Ollama:根據(jù)安裝向?qū)瓿砂惭b過程。
步驟2:安裝Llama 3.2-Vision模型
安裝好Ollama后,你就可以通過在終端運(yùn)行以下命令來安裝Llama 3.2-Vision模型了:
ollama run llama3.2-vision
此命令下載并設(shè)置模型以供本地使用。
步驟3:設(shè)置Python環(huán)境
現(xiàn)在已經(jīng)安裝了所有內(nèi)容,為OCR項(xiàng)目設(shè)置一個(gè)Python環(huán)境:
- 創(chuàng)建項(xiàng)目目錄:建立一個(gè)新的文件夾來存放項(xiàng)目文件。在命令行中輸入以下命令:
mkdir llama-ocr && cd llama-ocr
- 創(chuàng)建虛擬環(huán)境(這一步是可選的,但推薦):
python -m venv venv
source venv/bin/activate # 在Windows上使用 `venv\Scripts\activate`
- 安裝所需的庫:為了處理圖像和進(jìn)行base64編碼,我們需要安裝一些庫。使用pip安裝以下庫:
pip install requests Pillow
步驟4:編寫OCR腳本
現(xiàn)在編寫使用Llama 3.2-Vision執(zhí)行OCR的Python腳本。創(chuàng)建一個(gè)名為??ollama_ocr.py?
?的新文件,添加以下代碼:
import base64
import requests
from PIL import Image
SYSTEM_PROMPT = """作為OCR助手。分析提供的圖像并:
1. 盡可能準(zhǔn)確地識別圖像中所有可見的文本。
2. 保持文本的原始結(jié)構(gòu)和格式。
3. 如果任何單詞或短語不清晰,請?jiān)谵D(zhuǎn)錄中用[unclear]表示。
僅提供轉(zhuǎn)錄,不要有任何額外的評論。"""
def encode_image_to_base64(image_path):
"""將圖像文件轉(zhuǎn)換為base64編碼的字符串。"""
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
def perform_ocr(image_path):
"""使用Llama 3.2-Vision對給定圖像執(zhí)行OCR。"""
base64_image = encode_image_to_base64(image_path)
response = requests.post(
"http://localhost:8080/chat", # 確保此URL與你的Ollama服務(wù)端點(diǎn)匹配
json={
"model": "llama3.2-vision",
"messages": [
{
"role": "user",
"content": SYSTEM_PROMPT,
"images": [base64_image],
},
],
}
)
if response.status_code == 200:
return response.json().get("message", {}).get("content", "")
else:
print("錯(cuò)誤:", response.status_code, response.text)
return None
if __name__ == "__main__":
image_path = "path/to/your/image.jpg" # 替換為你的圖像路徑
result = perform_ocr(image_path)
if result:
print("OCR識別結(jié)果:")
print(result)
代碼解釋
- Base64編碼:?
?encode_image_to_base64?
?函數(shù)讀取一個(gè)圖像文件并將其轉(zhuǎn)換為base64字符串,這是通過HTTP請求發(fā)送圖像所需的。 - 執(zhí)行OCR:?
?perform_ocr?
?函數(shù)向本地Ollama服務(wù)發(fā)送POST請求,附帶系統(tǒng)提示和base64編碼的圖像。 - 處理響應(yīng):腳本檢查請求是否成功,并從JSON響應(yīng)中檢索識別出的文本。
步驟5:運(yùn)行OCR腳本
確保將腳本中的"path/to/your/image.jpg"替換成你想要識別的圖片文件的實(shí)際路徑。然后,在終端里運(yùn)行以下命令:
python ollama_ocr.py
應(yīng)該看到類似于以下的輸出:
OCR識別結(jié)果:
您的圖像中識別出的文本將顯示在這里。
步驟6:優(yōu)化結(jié)果
如果對OCR的結(jié)果不太滿意,可以嘗試調(diào)整腳本中的SYSTEM_PROMPT變量,使其更貼合你的具體需求,或者改善提供給Llama 3.2-Vision的指令的清晰度。
結(jié)論
使用Ollama和Llama 3.2-Vision構(gòu)建OCR應(yīng)用程序是直接且強(qiáng)大的,這得益于其多模態(tài)處理能力。按照上述步驟,你可以在電腦上創(chuàng)建一個(gè)功能性的OCR工具,利用先進(jìn)的AI技術(shù)進(jìn)行文本識別任務(wù)。
不妨多試試不同的圖片和提示,充分挖掘這個(gè)模型的潛力。隨著AI技術(shù)的持續(xù)進(jìn)步,像Llama 3.2-Vision這樣的工具在理解和處理視覺信息方面將變得更加高效和精準(zhǔn)。?
本文轉(zhuǎn)載自公眾號AI科技論談
