理想很丰满的Ollama-OCR

最近看到不少关于 Ollama OCR 项目友好可用的文章,也来试试。

安装依赖

我的环境是 python 3.11,直接安装下面这个库即可。

shell 复制代码
pip install ollama-ocr

参考:imanoop7/Ollama-OCR

项目介绍

Ollama OCR :一个强大的光学字符识别(OCR)软件包,它通过使用最先进视觉语言模型的 Ollama 从图像中提取文本。既可作为 Python 包使用,也可作为一个 Streamlit 网页应用程序。

🌟 功能特性:

  • 多视觉模型支持
    • LLaVA 7 B: 适用于实时处理的高效视觉-语言模型(注意:LLaVa 模型有时可能会生成错误的输出)
    • Llama 3.2 Vision: 针对复杂文档具有高精度的高级模型
  • 多种输出格式
    • Markdown: 保留文本格式,包括标题和列表
    • 纯文本: 清晰简单的文本提取
    • JSON: 结构化的数据格式
    • 结构化: 表格和有组织的数据
    • 键值对: 提取带有标签的信息
  • 批量处理
    • 并行处理多个图像
    • 每个图像的进度跟踪
    • 图像预处理(调整大小、归一化等)

此前的一些 pdf ocr 方法在识别复杂表格方面不理想。

llama3.2-vision:11b 视觉模型我已经提前下载过,但实测效果一般(可以说很差)。我们看下基于该模型进行 pdf 解析的效果具体如何(我抱着很大的期望)。

测试材料

  • 图片,以文字为主的流程图,如下
  • 规范的可复制的 pdf 文档(首页截图如下)
  • 英文图片,内容为论文摘要

测试记录

代码初始化可配置的参数只有 model 和 worker,需要根据自己的环境修改 url:

python 复制代码
model_name = model_name
base_url = "http://localhost:11434/api/generate"
max_workers = max_workers

但原始项目代码有点问题,不能指定 url 和端口,直接修改源码相应内容就行:

python 复制代码
from urllib.parse import urljoin

def __init__(self, model_name: str = "llama3.2-vision:11b", max_workers: int = 1):
    self.model_name = model_name
    ollama_host = os.environ.get('OLLAMA_HOST', 'http://localhost:11434/')
    if ollama_host.endswith('/'):
        ollama_host = ollama_host[:-1]
    self.base_url = urljoin(ollama_host, '/api/generate')
    self.max_workers = max_workers

图片 PDF

查阅库介绍,无法读取 pdf 文件,很遗憾无法测试 PDF 的识别效果。

文字性图片

测试代码
python 复制代码
from ollama_ocr import OCRProcessor

# Initialize OCR processor
ocr = OCRProcessor(model_name='llama3.2-vision:11b')  # You can use any vision model available on Ollama

# Process an image
result = ocr.process_image(
    image_path="./image.png",
    format_type="markdown"  # Options: markdown, text, json, structured, key_value
)
print(result)

直接执行 python photo.py。

测试效果

失败!输出很啰嗦,且没有识别出中文内容,而且好像出 bug 了。

英文图片

解析效果如下:

虽然不是原文的结构(这也有点不好),但是提取的文字要素基本正确。也就是对于文字类图片它也不是原文提取,而是一种总结。

小结

理想很丰满,现实很骨感。

期望落空了------虽然官网的介绍很好,但根据实际测试(或许,全英文语境是可以用的),这个 ollama-ocr 库完全无法投入生产使用,是一点也用不了。

相关推荐
Ruiery9 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
第九序言T9 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路9 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003969 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
欧米欧9 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery10 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
Sakura_j_h_10 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
qetfw10 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
quantdash_cc11 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl11 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计