理想很丰满的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 库完全无法投入生产使用,是一点也用不了。

相关推荐
zzzzzz310几秒前
LLM 成本治理:从 token 账单到线上熔断,团队应该先做哪三件事?
人工智能·python·api
10mAh8 分钟前
【PaddleOCR】扫描版 PDF 无法复制、RAG 检索为空怎么解决?——OCR 解析与版面还原实战
前端·pdf·ocr
程序猿编码19 分钟前
不用PyTorch,不用CUDA,我用C++手写了一个能跑GPT和Whisper的推理库
c++·pytorch·gpt·大模型·whisper
雾时之林28 分钟前
Linux---计算机网络常见面试题
linux·运维·计算机网络
AC赳赳老秦34 分钟前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
北斗落凡尘34 分钟前
LangGraph 入门实战(3)
python·langchain
TAN-90°-1 小时前
Deep Learning for Computer Vision——Image Classification with Linear Classifiers
python·深度学习·算法·计算机视觉·线性回归
AINative软件工程1 小时前
LLM API 成本失控怎么办?工程师的实时异常检测指南
python
练习两年半的攻城狮1 小时前
LlamaIndex ResponseMode 深度解析
python·llamaindex
10mAh1 小时前
【Linux】error while loading shared libraries 怎么解决?——ldd、RPATH 与动态链接排错
java·linux·前端