如何在本地运行图像文本识别模型

想要从图像中提取文本而不依赖于云服务吗?

您可以在自己的计算机上运行一个强大的光学字符识别(OCR)模型。这种本地方法让您完全控制整个过程,并保持数据的私密性。在本文中,我们将指导您设置和使用一个流行的开源OCR引擎。您将学习如何安装必要的库,加载预训练模型,以及处理图像以识别多种语言的文本。无论您是在进行个人项目还是开发应用程序,本指南将帮助您快速轻松地开始本地文本识别。

本指南使用Windows 11、Ollama模型运行器、Llama 3.2 Vision模型和Python。让我们开始吧!

1. 安装Ollama

首先,前往 https://ollama.com/download。下载安装程序(大约768 MB),并运行它以安装Ollama。

2. 拉取Llama 3.2 Vision模型

打开命令提示符或终端。我们将使用Ollama下载Llama 3.2 Vision模型。您有两个大小选项。

11B和90B参数指的是Llama 3.2 Vision模型的大小,表示每个模型中可训练参数的数量:

  • 11B模型:这是较小的版本,具有110亿个参数。
  • 90B模型:这是较大的版本,具有900亿个参数。

这两种模型均设计用于多模态任务,能够处理文本和图像。它们在各种应用中表现出色,例如:

  • 文档级理解
  • 图表和图形分析
  • 图像描述
  • 视觉定位
  • 视觉问答

选择11B还是90B模型取决于具体的使用案例、可用的计算资源以及对复杂视觉推理任务所需的性能水平。

对于较小的模型(11B,至少需要8GB的显存(视频内存)):

ollama pull llama3.2-vision:11b

对于更大的模型(90B,需要高达64GB的显存):

ollama pull llama3.2-vision:90b

由于其巨大的硬件要求,家庭使用时本地运行90B模型是极具挑战性的。

3. 运行模型

一旦模型下载完成,可以使用以下命令在本地运行它:

ollama run llama3.2-vision

4. 安装 ollama-ocr

为了方便处理图像,我们将使用 ollama-ocr Python 库。使用 pip 安装它:

pip install ollama-ocr

 

5. 用于OCR的Python代码

以下是识别图像中文本的Python代码:

from ollama_ocr import OCRProcessor

ocr = OCRProcessor(model_name='llama3.2-vision:11b')

result = ocr.process_image(
    image_path="./your_image.jpg",
    format_type="text")
print(result)

6. 运行代码

将 “./your_image.jpg” 替换为您图像文件的实际路径。将代码保存为 .py 文件(例如,ocr_script.py)。从命令提示符运行脚本:

python ocr_script.py

 

该脚本将图像发送到您本地运行的 Llama 3.2 Vision 模型,识别出的文本将打印在您的终端中。

为了补充我们关于本地使用 Llama 3.2 Vision 的指南,我们在一台家用台式计算机上进行了性能测试。以下是结果:

性能测试结果

我们在一台家用台式机上运行了 Llama 3.2 Vision 11B 模型,其规格如下:

  • 处理器:第13代 Intel(R) Core(TM) i7-13700K
  • 显卡:Gigabyte RTX 3060 Gaming OC 12G
  • 内存:64.0 GB DDR4
  • 操作系统:Windows 11 Pro 24H2

测试图像

为了测试,我们选择了这张有趣的图像。

该图像是用于测试本地运行的Llama 3.2 Vision 11B模型的表情包图像

测试输出

使用我们的Python脚本,我们让模型识别图像中的文本,使用的是标准系统提示。在对单个测试图像多次运行脚本后,我们观察到处理时间范围从16.78到47.23秒。值得注意的是,这些结果是在显卡以默认设置运行的情况下获得的,没有进行任何额外的调优或优化。

该图像是一个黑白表情包,包含两个面板,面板中有火柴人和对话框。

面板 1:

在第一面板中,图像左侧的一个火柴人向中央的另一个火柴人伸出双臂。中央的人物手中拿着一个标有“WEEKEND”(周末)的大圆圈,字母为粗体白色。图像右侧的火柴人部分被画框的边缘遮挡。

面板 2:
在第二面板中,两个火柴人再次被描绘。然而,这次中央的人物手中拿着一个标有“MONDAY”(星期一)的小圆圈,而不是“WEEKEND”。图像左侧的火柴人再次向中央人物伸出双臂。

文本和标签:
两个面板中的文本均以白色字母和粗体轮廓呈现。在第一面板中,标签为:

  •  “ME”(在火柴人的胸前)
  •  “WEEKEND”(在大圆圈内)

在第二面板中,标签为:

  •  “MONDAY”(在小圆圈内)
  • “ME”(在火柴人的胸前)

总体:
该表情包幽默地描绘了对即将到来的周末的期待和兴奋,以及当周末到来时随之而来的失望。简单而富有表现力的火柴人和对话框有效地传达了这一情感,以一种易于理解和娱乐的方式。

 

结论

就是这样!您现在正在使用Ollama和Python运行本地图像文本识别系统。请记得尝试不同的图像,并根据需要调整您的方法以获得最佳效果。

您可以在以下仓库中找到本文提到的脚本:https://github.com/karavanjo/dev-content/tree/main/llama-local-run

此链接中的视频演示了模型的运行。

更多