本月初,我尝试了书籍封面识别,将 YOLOv10、EasyOCR 和 Llama 3 结合成一个无缝工作流程。结果如何?我自信地从书籍封面中提取标题和作者,就像这是我的新超能力一样。你可以在这篇文章中查看这一旅程:使用自定义 Yolov10 和 Ollama (Llama 3) 增强 OCR。
但猜怎么着?仅仅几周后,这种方法已经开始感觉像流媒体时代的旧 VHS 录像带。为什么?随之而来的是 Llama 3.2-Vision——闪亮、新颖、超群的兄弟——完全提高了标准,让我之前的方法感觉像是来自恐龙。
让我们深入探讨为什么这种新方法会改变游戏规则
1、从优秀到卓越:进入 Llama 3.2-Vision
Llama 3.2-Vision 增强了 OCR + 信息提取管道。新的“视觉”支持使其比以前的版本更智能、更快速、更高效。
Llama 3.1 负责清理原始 OCR 输出,但 Llama 3.2-Vision 不仅能完成这些工作,还能做更多 — 直接处理图像,减少麻烦,减少对 EasyOCR 等第三方 OCR 工具的需求。它将所有内容集成到一个简单、精简的流程中。
这简化了工作流程并提高了准确性,因为 Llama 3.2-Vision 可以一次性完成整个任务:分析图像、检测文本并根据您的要求对其进行结构化。
2、Llama 3.2-Vision:如何安装和使用
在深入研究代码之前,你需要安装最新版本的 Ollama 来运行 Llama 3.2-Vision。请按照这篇文章获取分步指南。
安装后,直接从图像中提取书名和作者的代码非常简单:
from PIL import Image
import base64
import io
def image_to_base64(image_path):
# Open the image file
with Image.open(image_path) as img:
# Create a BytesIO object to hold the image data
buffered = io.BytesIO()
# Save the image to the BytesIO object in a specific format (e.g., JPEG)
img.save(buffered, format="PNG")
# Get the byte data from the BytesIO object
img_bytes = buffered.getvalue()
# Encode the byte data to base64
img_base64 = base64.b64encode(img_bytes).decode('utf-8')
return img_base64
# Example usage
image_path = 'image.png' # Replace with your image path
base64_image = image_to_base64(image_path)
import ollama
# Use Ollama to clean and structure the OCR output
response = ollama.chat(
model="x/llama3.2-vision:latest",
messages=[{
"role": "user",
"content": "The image is a book cover. Output should be in this format - <Name of the Book>: <Name of the Author>. Do not output anything else",
"images": [base64_image]
}],
)
# Extract cleaned text
cleaned_text = response['message']['content'].strip()
print(cleaned_text)
让我们看几个例子——
示例 1:单张图片输入
我们从上一篇文章中使用的单本书封面图片开始。
输出:
The Secret History: Donna Tartt.
该模型成功识别了书名和作者的全名,并根据指定的模板完美格式化。
示例 2:生成作者的全名
在这种情况下,作者的名字不完整。
Soure: Gyaanstore
输出:
Norwegian Wood: Haruki Murakami.
该模型毫不费力地精确提取了书名和作者姓名的可用部分。但令人印象深刻的是:它智能地填写了缺失的名字,给我们完整的作者姓名,就像它一直在那里一样。
示例 3:多本书
如果我们一次提供多本书封面的图片会怎么样?
Source: Elocalshop
输出:
Norwegian Wood: Haruki Murakami
Kafka on the Shore: Haruki Murakami
Men Without Women: Haruki Murakami
Sputnik Sweetheart: Haruki Murakami
South of the Border, West of the Sun: Haruki Murakami
A Wild Sheep Chase: Haruki Murakami
Birthday Stories: Haruki Murakami
Underground: Haruki Murakami
After Dark: Haruki Murakami
After the Quake: Haruki Murakami
The Elephant Vanishes: Haruki Murakami
该模型处理每幅图像并输出相应的标题和作者,使其能够灵活地批量处理多本书。
示例 4:书堆
在此场景中,我们呈现了一张多本书堆叠在一起的图像,就像它们在真实场景中一样
Souce: Typing Madly
输出:
* Norwegian Wood: Haruki Murakami
* Sputnik Sweetheart: Haruki Murakami
* After Dark: Haruki Murakami
* Dance, Dance, Dance: Haruki Murakami
* Kafka on the Shore: Haruki Murakami
* Hear the Wind Sing: Haruki Murakami
* A Wild Sheep Chase: Haruki Murakami
* Blind Willow, Sleeping Woman: Haruki Murakami
* After the Quake: Haruki Murakami
* The Wind-Up Bird Chronicle: Haruki Murakami
即使在书籍堆叠或部分被遮挡的情况下,Llama 3.2-Vision 也能尽可能准确地识别书名和作者。
3、有什么变化?
在我之前的方法中,我首先使用 YOLOv10 检测书籍封面上的文本区域,然后将这些区域通过 EasyOCR 进行文本提取,最后依靠 Llama 3 清理结果。现在,有了 Llama 3.2-Vision,这是一个一体化的流畅过程:我给它输入一张图片,它会立即给我一个随时可用的结构化响应——不再需要在多个模型之间来回切换。
以下是快速比较:
旧方法:
- YOLOv10:用于检测文本区域。
- EasyOCR:用于 OCR 处理。
- Llama 3.1:用于清理和构造文本。
新方法:
- Llama 3.2-Vision:一体化处理——图像分析、文本检测和构造。
4、为什么重要?
升级后的工作流程具有实际好处:
- 简单:更少的工具意味着更少的配置、更少的依赖关系和更容易的维护。
- 效率:Llama 3.2-Vision 可一次性处理所有任务,减少所需的时间和资源。
- 准确性:控制整个过程的单一模型可减少不同阶段之间出错的可能性。
- 多功能性:你可以使用 Ollama 在本地轻松运行此模型,并且该模型可以适应除简单文本提取之外的更复杂用例。
AI 驱动的文本提取前景光明,而 Llama 3.2-Vision 只是一个开始。
原文链接:Llama 3.2-Vision文本提取 - 汇智网