ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

白板手稿转任务表:让“看不清”成为一个合法字段

白板手稿转任务表:让“看不清”成为一个合法字段

白板上写着“周五出图,负责人像是小林”,模型很可能给出一张整齐表格。真正的问题是:负责人究竟写清了吗?如果模糊字符被自动补成姓名,表格越规范,错误反而越难察觉。

这个工具应当输出来源区域、原文、提取字段和待核实项。OCR 或视觉模型负责识别,应用负责保留疑点,不让一个空单元格被流畅的语言填满。

图像识别与文本整理是两段流程

2026 年 10 月 21 日 NVIDIA 的文档解析介绍强调结构、位置和阅读顺序。生活白板也需要这样的来源定位:一条任务能回到照片中的区域,复核时才知道该看哪里。官方文章

10 月 19 日 Ollama 的 Clef 公告把截图、票据等图像列为决策输入场景。这表明图像可以进入结构化流程,并不证明对你的潦草手稿就能可靠识别。公告

先验证提取协议

下面输入是人工准备的识别结果,不执行 OCR。保存为 whiteboard.py,演示来源关联和未知值如何保留。

regions = { "A": {"text": "周五完成封面草稿", "bbox": [10, 20, 240, 90]}, "B": {"text": "负责人看不清", "bbox": [250, 20, 380, 90]}, } candidate = { "task": "周五完成封面草稿", "source": "A", "owner": None, "owner_source": "B", } def validate(item): if item["source"] not in regions: raise ValueError("任务没有来源区域") if item["task"] not in regions[item["source"]]["text"]: raise ValueError("任务文字不在原始识别结果里") if item["owner"] is not None: ref = regions.get(item["owner_source"], {}).get("text", "") if item["owner"] not in ref: raise ValueError("负责人没有文字证据") return {**item, "needs_review": item["owner"] is None} assert validate(candidate)["needs_review"] try: validate({**candidate, "owner": "小林"}) except ValueError: pass else: raise AssertionError("无证据姓名被接受") print(validate(candidate))

子串检查不理解语义,也无法纠正 OCR 本身错字。真实应用需要显示原照片、区域框与识别文字,允许人修改;照片旋转或压缩后,还要保证坐标映射一致。

相对日期也不要偷偷变成截止时间

“周五”依赖白板书写日期,“下周再看”更不一定是任务截止日。没有参照日期时保留原表达,向用户确认后再建提醒。无主语的“已完成”也不能自动对应上一行任务。

若采用 Ollama 的 JSON schema 输出,可约束字段类型并让 owner 允许为空;输出仍需业务校验,低温度不会保证事实真实。官方结构化输出文档

本文只验证了人工识别结果的协议,没有运行 OCR、视觉模型或提醒平台。整齐的表格应当帮助发现疑点,而不是把疑点藏起来。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进