This commit is contained in:
liaibo
2025-12-06 16:47:17 +08:00
parent 15921bfeb7
commit 9ef8e06d67
75 changed files with 559237 additions and 93 deletions
+76
View File
@@ -0,0 +1,76 @@
针对化学书籍(包含大量分子式、化学反应方程式、苯环结构图、上下标)的识别,传统的 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。
2. 操作步骤
在终端中运行(确保 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。虽然慢一点,但它是目前开源界处理科学公式的“标准答案”。