76 lines
3.2 KiB
Markdown
76 lines
3.2 KiB
Markdown
针对化学书籍(包含大量分子式、化学反应方程式、苯环结构图、上下标)的识别,传统的 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。虽然慢一点,但它是目前开源界处理科学公式的“标准答案”。
|