
做一个把「孩子同一类题反复错」自动归因的小工具,技术选型比想象中影响大:OCR 引擎决定文本质量,句向量决定“相似”的含义,聚类决定分组粒度。本文不写翻车故事,只复盘每一步的判据、对比、我的选择和“没选对会怎样”。相关踩坑与代价分析见我的另一篇《我搭错题归因小工具踩过的 5 个坑》。
选型前先固定三件事,后面所有选择都对着它们判断:
候选 | 定位 | 精度与短板 | 部署/成本 | 我的选择 |
|---|---|---|---|---|
PaddleOCR4 | 中文场景优化、开源 | 印刷体中文强;手写需版面先切分,符号偶发错位 | 本地可跑、免费 | ✅ 主选 |
OCRmyPDF | PDF/文档管线、开源 | 面向扫描文档,中文字体覆盖一般 | 本地可跑、免费 | 备选(纯 PDF 场景) |
商业 OCR API | 云端调用 | 精度稳但价格按量计;图片出境需注意隐私 | 按量付费 | 可选通道(大图量时) |
判据:中文/手写优先 → 本地可部署 → 成本低。
我的选择:PaddleOCR,理由三点——中文印刷体识别在开源方案里最稳;可完全本地运行,错题照片不出本机;有置信度输出,低置信度结果可以进人工复核而不是直接进管线4。OCRmyPDF 只有在输入是扫描版 PDF 时才值得介入。
没选对会怎样:若为“省事”直接上云端 API,要么长期按量付费,要么在“图片不出本地”这类隐私约束下根本无法采用;若选只擅长英文文档的引擎,中文题干与手写步骤的质量会直接拖累后面所有环节。
候选 | 定位 | 中文与维度 | 部署/成本 | 我的选择 |
|---|---|---|---|---|
bge 系列(如 bge-large-zh)2 | 开源中文 embedding | 中文检索/相似度经过专门评测(C-Pack) | 本地可跑、免费 | ✅ 主选 |
云端 Embedding API(OpenAI/百炼等) | 通用英文强、中文可用 | 中文效果不错但语义粒度是“通用语感”,不是知识点粒度 | 按 token 计费、需联网 | 备选(需联网+预算允许) |
通用 BERT 句向量 | 通用基线 | 中文需自行微调,成本高 | 本地可跑 | 不选(维护成本高) |
判据:中文场景评测 → 是否可离线 → 单位成本。
我的选择:bge-large-zh。它面向中文检索/相似度做过专门的数据与评测2,本地自部署即可,错题文本不出本机。云端 API 效果不差,但引入联网与按量成本,且“语义近”不代表“同一知识点”,这个粒度问题换哪个 embedding 都一样(详见踩坑篇)——所以先要一个能离线迭代的底座。
没选对会怎样:若只追公开榜分选一个英文导向的模型,中文题干与错因的相似度会失真;若直接上云端 API,每一轮聚类实验都在计费,迭代心态会变形。
候选 | 机制 | 适用与短板 | 我的选择 |
|---|---|---|---|
KMeans | 指定 k 的划分 | 组数要提前知道;错题组数本来就不知道 → 不适用 | ❌ 排除 |
DBSCAN1 | 密度连通,全局半径 eps | 概念清晰、可解释;但 eps 对密度不均与样本量极敏感 | 备选(样本密且均匀时) |
HDBSCAN3 | 密度自适应层次聚类 | 不需要手调全局半径,对长尾/噪声有原生处理 | ✅ 主选 |
判据:无需预设组数 → 密度不均/长尾稳健 → 可解释。
我的选择:HDBSCAN3。错题组数事先不知道、不同知识点样本密度差异大,HDBSCAN 按局部密度自适应、能天然区分噪声点(长尾错题),比“手调全局 eps”的 DBSCAN 更省心;KMeans 因为必须指定 k 第一个被排除。聚类仍只当“召回器”:同簇的题再交给知识点规则与人工复核定标签,不把聚类结果当定论。
没选对会怎样:选 KMeans 就得先猜组数,猜错全部失真;选 DBSCAN 就得对每个新班级/新学科重调 eps,等于把参数变成永久人工成本。
环节 | 我选 | 一句话理由 |
|---|---|---|
OCR | PaddleOCR(本地) | 中文手写优先 + 隐私 + 低置信度可控 |
句向量 | bge-large-zh(本地) | 中文专项评测 + 离线迭代 |
聚类 | HDBSCAN | 不预设组数、密度自适应、长尾当噪声处理 |
实战参考:这套选型不是唯一答案。我在调研「错题透镜」这类现成错题归因工具的工程实现时,也看到同样的取舍——自研与成品的分歧主要在“要不要把聚类当定论”,而我倾向聚类只做召回。你可以在你自己的数据规模与隐私约束下改判据,但“先固定数据/部署/验收三件事再选型”这个顺序是通用的。
选型顺序为什么先固定验收口径?
因为“聚类对不对”没有内置答案:不先约定用“手工批注的知识点”当锚点来验收,任何选型好坏都无法判断,后面所有优化都会变成自我感觉良好。
bge 与云端 API 的效果差距大吗?
对“语义相关”任务差距不大,对“知识点粒度”的区分都不够——那需要词典/规则二次划分而不是换模型。既然差距主要在迭代成本与隐私,离线方案在错题场景更值得优先。
错题归因小工具的技术选型,本质是三个连续判断:OCR 定文本质量下限、句向量定“相似”的含义、聚类定分组粒度。用“数据规模 × 部署约束 × 验收口径”三条判据逐一过,答案会自己浮出来:PaddleOCR + bge 系列 + HDBSCAN,且全部可本地运行。选型先行,参数与调优才有意义。
1 Ester, M., Kriegel, H.-P., Sander, J., & Xu, X. (1996). A density-based algorithm for discovering clusters in large spatial databases with noise. KDD-96, 226–231.(DBSCAN;本节讨论 eps 全局半径局限的出处)
2 Xiao, S., et al. (2024). C-Pack: Packaged resources to advance general Chinese embedding. AAAI 2024.(bge 系列中文 embedding 的数据与评测来源)
3 McInnes, L., Healy, J., & Astels, S. (2017). hdbscan: Hierarchical density based clustering. The Journal of Open Source Software, 2(11), 205.(HDBSCAN 开源实现与密度自适应聚类的出处)
4 Du, Y., et al. (2020). PP-OCR: A practical ultra lightweight OCR system. arXiv:2009.09941.(PaddleOCR 原论文;含置信度输出机制)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。