Llama 3.2-Vision文本提取

MODEL-ZOO Oct 29, 2024

本月初,我尝试了书籍封面识别,将 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 只是一个开始。


原文链接:Enhance OCR with Llama 3.2-Vision using Ollama

汇智网翻译整理,转载请标明出处

Tags