Files
mnote/TEST/ocr.md
T
2025-12-06 16:47:17 +08:00

3.2 KiB

针对化学书籍(包含大量分子式、化学反应方程式、苯环结构图、上下标)的识别,传统的 OCR(如 RapidOCR、PaddleOCR)基本无法满足需求,因为它们只能识别“文字”,无法理解“化学结构的拓扑关系”或将其转换为 LaTeX 公式。

鉴于你是为了集成到笔记软件中,且已经验证 Ollama 可以成功调用你的 6800XT,最佳的“高精度 + 本地化”方案是利用 多模态大模型(VLM) 进行“视觉转录”,而不是传统的 OCR。

以下是针对 Windows + 6800XT 的具体高精度方案:

方案一:Ollama + MiniCPM-V 2.6 (最推荐,支持 6800XT) 这是目前开源界公认的小参数量下 OCR 能力最强(尤其是针对密集文本和科学公式)的模型之一。它能直接“看懂”图片里的化学式,并输出 Markdown/LaTeX。

  1. 为什么选这个? 懂化学: 它不是像传统 OCR 那样把苯环识别成圆圈,而是理解这是化学结构,并能输出 LaTeX 代码。

硬件兼容: 既然你的 Ollama 能跑显卡,直接 pull 这个模型就能利用 6800XT 加速。

API 友好: 笔记软件插件可以通过 HTTP 请求直接调用本地的 localhost:11434。

  1. 操作步骤 在终端中运行(确保 Ollama 已更新到最新版):

Bash

ollama run minicpm-v

或者尝试更轻量的

ollama run llama3.2-vision 3. 笔记软件集成逻辑 (Python 示例) VLM 最大的优势是可以接受 Prompt(提示词)。你可以强制要求它只输出 LaTeX 格式。

Python

import base64 import requests import json

def recognize_chemistry_page(image_path): # 1. 图片转 Base64 with open(image_path, "rb") as f: base64_image = base64.b64encode(f.read()).decode("utf-8")

# 2. 构造 Prompt,专门针对化学公式优化
prompt = """
Identify the content in this image. 
Transcribe all text into Markdown format. 
For chemical formulas and mathematical equations, you MUST use LaTeX format (e.g., $H_2O$, $C_6H_6$). 
Do not explain the image, just output the content.
"""

# 3. 调用 Ollama API
url = "http://localhost:11434/api/generate"
data = {
    "model": "minicpm-v",  # 或 llama3.2-vision
    "prompt": prompt,
    "images": [base64_image],
    "stream": False
}

response = requests.post(url, json=data)
result = response.json()
return result['response']

测试

print(recognize_chemistry_page("chem_book_page.jpg")) 方案二:Nougat (Meta 专门开发的学术 OCR) 如果你发现通用的大模型有时候会“胡编乱造”(幻觉),那么 Nougat 是专门为科学文献(PDF转Markdown)设计的“小”模型。

优点: 极高精度还原数学和化学公式(LaTeX)。

Windows 兼容性: 它基于 PyTorch。虽然原生 Windows + AMD 比较麻烦,但你可以强制使用 CPU 运行。

注意: 因为模型参数不大(Base版约 350M),用 CPU 跑虽然比 GPU 慢,但处理单页截图作为笔记插件完全可以接受(通常几秒钟)。

安装与使用:

Bash

pip install nougat-ocr 代码调用(CPU模式): 你需要通过命令行或 Python 封装调用,强制指定设备为 CPU。虽然慢一点,但它是目前开源界处理科学公式的“标准答案”。