AI 驱动的书籍封面标题识别工具 — OCR + VLM 提取书名,生成带缩略图的 Excel 表格。
- 图片 → Excel:将封面照片嵌入 Excel,自动识别书名
- 两步识别:DeepSeek-OCR 提取文字 → Qwen2.5-7B 提取书名,准确率 99%+
- VL 模型补漏:OCR 失败的封面用 Qwen3-VL 等视觉模型重试
- 多目录支持:
--input-dir/--output指定不同图片目录和输出文件 - 断点续传:中断后自动跳过已处理项,进度文件独立保存
- 并发处理:可配置并发数,大幅提升速度
- HEIC 支持:原生支持 iPhone 拍摄的 HEIC 格式照片
将书籍封面照片放入文件夹(支持 HEIC / JPG / PNG 等格式)。
pip install openpyxl pillow pillow-heif openai在 SiliconFlow 注册并获取 API Key:
export SILICONFLOW_API_KEY=your-api-key# 完整流程:嵌入图片 → 识别书名
python process_books.py --api-key $SILICONFLOW_API_KEY --workers 15
# 处理指定文件夹,输出到指定文件
python process_books.py --input-dir book-images2 --output books2.xlsx \
--api-key $SILICONFLOW_API_KEY --workers 15
# 仅嵌入图片,跳过识别
python process_books.py --init-only
# 用 VL 模型重新识别失败的书名
python process_books.py --api-key $SILICONFLOW_API_KEY \
--retry-unrecognized --model Qwen/Qwen3-VL-32B-Instruct| 参数 | 默认值 | 说明 |
|---|---|---|
--input-dir |
book-images |
图片文件夹路径 |
--output |
books.xlsx |
输出 Excel 文件名 |
--init-only |
- | 仅创建含图片的 Excel |
--names-only |
- | 仅识别书名(需已存在 Excel) |
--api-key |
$SILICONFLOW_API_KEY |
SiliconFlow API Key |
--model |
deepseek-ai/DeepSeek-OCR |
OCR / VL 模型名称 |
--title-model |
Qwen/Qwen2.5-7B-Instruct |
提取书名的文本模型 |
--workers |
5 |
并发数 |
--reset |
- | 清除进度缓存,全部重新识别 |
--retry-unrecognized |
- | 用 VL 模型重试"无法识别"的行 |
进度文件与缩略图目录根据 --output 自动命名(如 books2.xlsx → books2.progress.json / .thumbnails_books2/)。
book-images/ → Phase 1: 嵌入 Excel → Phase 2: AI 识别书名
IMG_0001.HEIC id | 书名 | 图片 DeepSeek-OCR → 提取文字
IMG_0002.HEIC ... Qwen2.5-7B → 提取书名
IMG_0003.HEIC
books.xlsx ← 最终输出
books.progress.json ← 断点缓存
首次识别(默认)
DeepSeek-OCR(Free OCR)→ 提取封面所有文字
↓
Qwen2.5-7B(文本 LLM)→ 从文字中挑出书名
失败重试(--retry-unrecognized)
Qwen3-VL(视觉模型)→ 直接理解图片,输出书名
| 数据集 | 图片数 | 首轮识别率 | 最终识别率 |
|---|---|---|---|
| 儿童绘本 (book-images) | 240 | 88.8% | 99.2% |
| 儿童绘本 (book-images2) | 126 | 92.1% | 100% |
所有模型通过 SiliconFlow API 调用(OpenAI 兼容协议):
| 角色 | 模型 |
|---|---|
| OCR 文字提取 | deepseek-ai/DeepSeek-OCR |
| 书名识别 | Qwen/Qwen2.5-7B-Instruct |
| 失败重试(推荐) | Qwen/Qwen3-VL-32B-Instruct |
MIT