这张图片由作者提供。
月初,我开始接触图书封面识别,将 YOLOv10、EasyOCR 和 Llama 3 整合起来,形成一个无缝的工作流程。结果是,我自信地从图书封面上提取标题和作者,就像是我的新超能力一样。你可以在这篇文章里了解更多详情:查看详情。
利用自定义YOLOv10和Ollama(Llama 3)增强OCR中文OCR工作流该文章通过集成自定义YOLOv10模型与EasyOCR,提升OCR性能medium.com但是你知道发生了什么吗?就在几周之后,那种方法已经开始让人感觉像旧录像带一样。为什么呢?然后来了一个Llama 3.2-Vision,这个新星,完全超过了预期,让我的早期方法显得过时了。
让我们来看看为什么这个新方法这么颠覆性
从好到伟大:来认识Llama 3.2-Vision升级到 Llama 3.2-Vision 后,OCR 和信息提取流程有了显著增强。新的“视觉”支持使它更智能、更快、更高效。Llama 3.1 处理原始 OCR 输出的清理工作,而 Llama 3.2-Vision 不仅能做到这些,还能直接处理图像,更少的麻烦,并且不再需要像 EasyOCR 这样的第三方 OCR 工具。它将所有功能集成到一个简单、流畅的流程中。
这不仅简化了工作流程,还提高了准确性,因为Llama 3.2-Vision一次性完成了整个过程:分析图像、检测文本,并根据您的需求进行整理。
Llama 3.2-Vision:如何安装和使用在动手写代码之前,您需要先安装最新版本的Ollama,以便运行Llama 3.2-Vision。请参考这篇文章中的步骤指南。
快速指南:如何使用Ollama在本地运行LLAMA 3.2-Vision:边缘AI的颠覆者 | medium.com安装完成后,提取书名和作者的代码就变得非常简单,具体如下:用于从图像中提取书名和作者的代码极为简单。
导入PIL库中的Image模块
导入base64
import io
import ollama
def image_to_base64(image_path):
# 打开图像文件
with Image.open(image_path) as img:
# 创建一个BytesIO对象来保存图像数据
buffered = io.BytesIO()
# 将图像保存到BytesIO对象中,指定格式(例如,PNG)
img.save(buffered, format="PNG")
# 从BytesIO对象中获取字节数据
img_bytes = buffered.getvalue()
# 将字节数据编码为base64
img_base64 = base64.b64encode(img_bytes).decode('utf-8')
return img_base64
# 示例使用
image_path = 'image.png' # 用你的图像路径替换为
base64_image = image_to_base64(image_path)
# 使用Ollama来清理和格式化OCR输出
response = ollama.chat(
model="x/llama3.2-vision:latest",
messages=[{
"role": "user",
"content": "图片是一本书的封面。输出格式应为:《书名》:《作者名》。不要输出任何其他内容",
"images": [base64_image]
}],
)
# 提取清理过的文本
cleaned_text = response['message']['content'].strip()
print(cleaned_text)
我们来看几个例子——
示例一:单图输入我们从上一篇文章中使用的一张书的封面图片开始这张图片。
来源:作者的图片
秘密历史:唐娜·塔特
模型成功识别了书名和作者的全名,并完美地按照指定模板格式化。
示例 2:生成作者全名
这里作者的名字没写全。
来源: Gyaanstore(村上春树的《挪威的森林》平装本)
村上春树的《挪威的木头》
该模型轻松地提取了标题和作者名字的可用部分,而且非常精准。但是更让人惊讶的是,它智能地补上了缺失的名字,给出了完整的作者姓名,就像这个名字本来就是完整的。
示例三:多本书如果我们一次提供多本不同书的封面图片,会怎样?
来源:Elocalshop
挪威的森林:村上春树
海边的卡夫卡:村上春树
没有女人的男人:村上春树
斯普特尼克恋人:村上春树
国境以南,太阳以西:村上春树
挪威的羊群:村上春树
生日故事集:村上春树
地下:村上春树
夜色温柔:村上春树
震灾之后:村上春树
消失的象:村上春树
这使得该模型适合处理每幅图片并输出标题和作者信息,使得它适用于一次处理多本书。
示例 4:一叠书这里展示一幅图像,书本摞在一起,就像现实中一样。
* 挪威的森林:村上春树
* 斯普特尼克的心跳:村上春树
* 夜色温柔:村上春树
* 舞舞舞:村上春树
* 海边的卡夫卡:村上春树
* 听风的歌:村上春树
* 饭圈:村上春树
* 盲柳与睡女:村上春树
* 地震之后:村上春树
* 奇鸟行状录:村上春树
即使书籍堆放在一起或部分被遮挡,Llama 3.2-Vision 仍能尽可能准确地识别出书名和作者。
最近有什么变化吗?在我之前的办法中,我首先使用YOLOv10检测书封上的文字区域,然后利用EasyOCR提取文字,最后依靠Llama 3清理结果。现在,使用Llama 3.2-Vision,整个过程变得简便流畅:我把图片输入,它立刻就能输出可以直接使用的结构化信息——再也不用在多个模型间来回切换了。
这里有个快速对比。
老方法:
- YOLOv10 :用于检测文本区域的模型。
- EasyOCR :用于OCR。
- Llama 3.1 :用于清理并整理文本的模型。
新方法:
- Llama 3.2-Vision:一站式处理功能——图像分析、文本检测和结构化处理。
升级的工作流程带来了实实在在的好处:
- 简洁性:工具少意味着配置更少,依赖更少,维护也更简单。
- 效率:Llama 3.2-Vision 一次性处理所有内容,减少所需的时间和资源消耗。
- 准确性:单一模型控制整个流程减少了不同阶段之间出错的概率。
- 通用性:你可以轻松地使用 Ollama 进行本地运行,该模型还能应对更复杂的使用场景。
文本提取的AI未来一片光明,而Llama 3.2-Vision只是个开端。请继续关注我进一步探索Llama 3.2-Vision功能,很快你可能会看到我的另一篇更新——这个领域变化很快!
如果你尝试了这个方法,请告诉我你的结果!我很想知道这与你以前用过的方法或甚至不同的模型相比如何。
完整的源代码和Jupyter笔记本可在GitHub仓库获取。如果您有任何关于优化提示语或其他改进的想法,欢迎随时联系交流。
看看Ken Jeong在Giphy的GIF。
共同学习,写下你的评论
评论加载中...
作者其他优质文章