为了账号安全,请及时绑定邮箱和手机立即绑定

用Llama 3.2-Vision提升OCR识别效果——Ollama的妙用

此项目通过使用Llama 3.2-Vision从图像中提取并补充书名和作者姓名,从而提升书籍封面识别功能,实现无缝体验。

这张图片由作者提供。

月初,我开始接触图书封面识别,将 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:一站式处理功能——图像分析、文本检测和结构化处理。
为什么这很重要

升级的工作流程带来了实实在在的好处:

  1. 简洁性:工具少意味着配置更少,依赖更少,维护也更简单。
  2. 效率:Llama 3.2-Vision 一次性处理所有内容,减少所需的时间和资源消耗。
  3. 准确性:单一模型控制整个流程减少了不同阶段之间出错的概率。
  4. 通用性:你可以轻松地使用 Ollama 进行本地运行,该模型还能应对更复杂的使用场景。

文本提取的AI未来一片光明,而Llama 3.2-Vision只是个开端。请继续关注我进一步探索Llama 3.2-Vision功能,很快你可能会看到我的另一篇更新——这个领域变化很快!

如果你尝试了这个方法,请告诉我你的结果!我很想知道这与你以前用过的方法或甚至不同的模型相比如何。

完整的源代码和Jupyter笔记本可在GitHub仓库获取。如果您有任何关于优化提示语或其他改进的想法,欢迎随时联系交流。

看看Ken Jeong在Giphy的GIF。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消