1. 项目概述:为什么打印机和扫描仪边端设备突然需要“读懂”文档?
你有没有遇到过这样的场景:在办公室用高速扫描仪扫完一叠合同,导出的PDF却是一堆模糊的图片,文字无法复制、搜索,更别说自动提取关键字段;或者在工厂产线用工业级条码扫描枪读取设备铭牌,结果OCR识别把“S/N: A7X9B2”错成“S/N: A7XQB2”,导致整批物料入库信息错误;又或者在社区服务中心,老人拿着手写填好的医保申请表来复印,工作人员得手动把每张纸上的姓名、身份证号、日期挨个敲进系统——这些不是小问题,而是每天在数以千万计的打印、扫描、归档环节中真实发生的效率黑洞。
“Document Reformatting Using Multimodal AI Models for Printer / Scanner Edge Devices”这个标题,说的正是把过去只能“看图”的边缘硬件,变成能“理解文档”的智能节点。它不是简单加个OCR模块,而是让打印机、扫描仪这类长期被当作“哑设备”的终端,具备对文档内容结构、语义意图、视觉排版的联合感知能力。核心关键词——文档重格式化(Document Reformatting)、多模态AI模型(Multimodal AI Models)、打印机/扫描仪边缘设备(Printer / Scanner Edge Devices)——三者叠加,指向一个非常具体的工程目标:在不依赖云端、不上传原始图像的前提下,让设备本地完成从“拍一张照片”到“生成可编辑、可检索、可结构化输出”的完整闭环。
我做边缘AI落地有八年,经手过银行网点柜面终端、医院检验报告打印机、政务自助服务机等二十多个真实产线项目。最深的体会是:文档处理类边缘AI,成败不在模型有多先进,而在能否把“理解文档”这件事,拆解成打印机主控芯片能扛得住、扫描仪固件能跑得动、运维人员能一眼看懂异常的确定性动作。这不是实验室里的demo,而是要嵌入到夏普MX-M3570、佳博GP-U80300I、爱普生DS-530这类设备里,7×24小时稳定运行三年不重启的硬需求。所以这篇内容,不讲Transformer架构推导,不列SOTA榜单,只讲我在产线踩过的坑、调过的参数、验证过的模型轻量化路径,以及——怎么让一台出厂固件只支持JPG输出的老款扫描仪,通过固件升级,真正“看懂”它扫的每一页A4纸。
2. 整体设计思路:为什么必须是多模态?单靠OCR为什么行不通?
2.1 文档理解的本质难题:视觉+语言的强耦合
很多人第一反应是:“不就是OCR吗?Tesseract开源又免费。”但实际产线数据会立刻打脸。我们曾采集某省社保中心三个月的真实扫描件,统计发现:
- 图像质量缺陷占比:32%(反光、阴影、装订孔遮挡、纸张褶皱)
- 版式复杂度缺陷占比:41%(多栏排版、表格嵌套、手写批注与印刷体混排、印章覆盖关键字段)
- 语义歧义缺陷占比:27%(“1”和“I”、“0”和“O”、“5”和“S”在低分辨率下难以区分;地址中的“朝阳区”和“朝阳区”OCR都识别为“朝阳区”,但后者是错别字)
单纯OCR只解决“像素→字符”的映射,而文档重格式化要解决的是“图像→结构化语义→目标格式”的三级跃迁。举个具体例子:一份医疗检验报告扫描件,OCR可能准确识别出所有文字,但无法回答这三个问题:
- “RBC”和它右边的“4.2×10¹²/L”是否构成一个逻辑单元(即“红细胞计数”及其数值)?
- 表格下方的手写签名区域,是独立签名块,还是表格的一部分?
- 页面右上角的“Report No.: 2024-08765”属于报告头元数据,还是正文内容?
这些问题的答案,决定着最终输出的JSON里,{"report_no": "2024-08765", "tests": [{"name": "RBC", "value": "4.2×10¹²/L"}]}能否自动生成。而答案,藏在图像的空间布局、字体大小对比、线条连接关系、甚至印章的红色色域分布里——这正是单模态OCR的盲区。
2.2 多模态AI的工程化选择:LayoutLMv3 vs. Donut vs. 自研轻量分支
市面上主流的文档理解多模态模型有LayoutLM系列、Donut、UDOP等。我们在四款主流边缘设备(瑞芯微RK3399、NXP i.MX8M Plus、联发科Genio 1200、英伟达Jetson Orin Nano)上实测了三类方案:
| 模型方案 | 输入分辨率 | 参数量 | RK3399推理延迟(ms) | 内存占用(MB) | 结构化F1(测试集) |
|---|---|---|---|---|---|
| LayoutLMv2-base | 224×224 | 135M | 1280 | 1120 | 0.82 |
| Donut-base | 960×1280 | 180M | OOM | >2048 | 0.87 |
| 自研DocEdge-Lite(本项目采用) | 384×512 | 28M | 310 | 385 | 0.85 |
提示:Donut在服务器端效果惊艳,但其Decoder结构对内存带宽要求极高,在RK3399上直接触发OOM(Out of Memory),根本无法部署。LayoutLMv2虽能跑通,但1280ms的延迟意味着用户按一次“扫描并结构化”按钮,要等超过1秒——在银行柜台这种毫秒必争的场景,体验断层。
我们最终选择基于LayoutLMv2进行深度剪枝与重训,形成DocEdge-Lite模型。关键改造点有三处:
- 视觉编码器替换:弃用原版ViT,改用MobileNetV3-Small作为图像特征提取主干。实测在保持空间位置感知能力前提下,视觉分支参数量下降76%,推理速度提升3.8倍。
- 文本-布局融合精简:原LayoutLM的Layout Embedding(将坐标(x,y,width,height)映射为向量)计算开销大。我们改用分段线性插值+查表法,将坐标编码计算从浮点运算压为整数位移,耗时从42ms降至5ms。
- 任务头重构:不预测原始token,而是直接回归关键字段的Bounding Box坐标与类别标签(如“姓名框”、“金额框”、“日期框”),再通过后处理规则生成JSON。这绕开了Decoder的自回归瓶颈,是边缘设备提速的核心。
这个选择背后没有玄学,只有两个硬约束:一是设备SoC的NPU算力上限(RK3399 NPU峰值2.2TOPS),二是客户要求的端到端延迟≤400ms(含图像预处理、模型推理、后处理)。所有技术选型,都是在这两条红线内反复权衡的结果。
2.3 边缘部署的底层逻辑:为什么“重格式化”必须发生在设备端?
有人会问:既然模型这么复杂,为什么不把图像传到云端处理?答案很现实:三个不可回避的硬伤。
第一是隐私合规刚性要求。某三甲医院试点时,信息科明确要求:“患者检验报告的原始扫描图像,禁止离开院内局域网”。这是《个人信息保护法》和《医疗卫生机构网络安全管理办法》的双重红线。任何上传行为,都会导致项目在法务审核阶段直接终止。
第二是网络可靠性不可控。我们在西北某油田现场部署时,井站打印机所在环境4G信号常年只有1-2格,ping丢包率超40%。一次上传失败,意味着整页文档需重新扫描——而现场工人戴着手套操作,重复扫描三次后,纸张已起毛边,OCR准确率断崖下跌。
第三是成本结构失衡。按单台设备日均处理300页计算,若每页上传1.2MB图像(常见扫描分辨率300dpi),年流量达131GB。按运营商物联网卡资费(约¥0.002/MB),单台年通信成本¥262。而设备本身售价才¥2800,三年维保期内通信费就占总拥有成本(TCO)的近10%——财务部门绝不会签字。
所以,“边缘”不是技术炫技,而是业务落地的生存底线。文档重格式化必须在设备本地完成,这是所有后续设计的前提。
3. 核心细节解析:从扫描图像到结构化输出的七步链路
3.1 步骤1:图像预处理——不是“增强”,而是“缺陷修复”
很多团队把预处理当成可有可无的环节,直接拿扫描原始图喂模型。我们在首批2000份样本测试中发现,未经预处理的图像,模型结构化F1直接掉到0.61。关键缺陷修复有三项:
反光抑制(Glare Removal):使用改进的Retinex算法,但针对边缘设备做了两点优化。一是将高斯模糊核尺寸从15×15压缩为7×7,避免大核卷积拖慢速度;二是用查表法替代指数运算,将单帧处理时间从83ms压至12ms。原理很简单:扫描反光本质是局部亮度异常升高,Retinex通过分离光照分量来还原真实反射率,但边缘设备不需要理论完美,只要人眼可辨即可。
装订孔/折痕填充(Hole Filling):不用复杂的GAN补全,而是基于连通域分析的启发式填充。先用Canny检测边缘,再对断裂边缘线做直线拟合延伸,最后用双线性插值填充缺失像素。实测对A4纸左上角装订孔的修复成功率98.7%,且处理时间仅9ms。这里有个经验:装订孔填充不是越“真”越好,而是要确保OCR引擎能连续识别横跨孔洞的单词(如“Agreement”被孔洞切为“Agre”和“ement”),所以填充区域的灰度值必须严格匹配周边纸张基底。
二值化自适应(Adaptive Binarization):放弃全局阈值(Otsu),改用局部窗口(11×11)的加权平均。但权重不是固定高斯,而是根据窗口内方差动态调整——方差大(如表格线密集区)则权重向中心像素倾斜,方差小(如纯文本区)则权重更均匀。这保证了表格线不断裂、文字笔画不粘连。我们用OpenCV的
cv2.ximgproc.niBlackThreshold实现,比传统Sauvola快2.3倍。
注意:所有预处理算法必须在设备SoC的CPU上运行,不能依赖GPU/NPU。因为预处理是模型推理的前置步骤,而多数打印机SoC的NPU只对特定算子(如Conv2D、MatMul)加速,图像处理算子往往走CPU通路。我们曾因在NPU上强行跑Canny导致驱动崩溃,教训深刻。
3.2 步骤2:多模态特征对齐——让文字和位置“说同一种语言”
LayoutLM类模型的核心是将文本Token与其对应的视觉区域(Bounding Box)联合编码。但在边缘设备上,这个对齐过程极易出错。我们发现,83%的定位偏差来自Box坐标归一化错误。
标准做法是将Box坐标(x1,y1,x2,y2)除以图像宽高归一化到[0,1]。但问题在于:扫描仪输出的原始图像常有黑边(尤其是ADF自动进纸时),而黑边尺寸不固定。如果用原始图像宽高归一化,黑边会挤压有效区域坐标,导致模型“以为”文字在页面边缘。
我们的解决方案是:先检测有效内容区域(Content-Aware Cropping)。用投影法(Projection Profile)分析图像水平/垂直方向的像素累计值,找到文字密度突增/突降的边界。例如,垂直投影中,从顶部开始第一个累计值>阈值的位置,即为有效区域上边界。此方法鲁棒性强,对黑边、装订孔、阴影均有良好适应性,且计算仅需两次一维遍历,耗时<3ms。
归一化坐标公式修正为:
x1_norm = (x1 - crop_x1) / (crop_x2 - crop_x1) y1_norm = (y1 - crop_y1) / (crop_y2 - crop_y1) x2_norm = (x2 - crop_x1) / (crop_x2 - crop_x1) y2_norm = (y2 - crop_y1) / (crop_y2 - crop_y1)这个看似微小的改动,使模型对字段坐标的回归误差(IoU)从0.63提升至0.79,是结构化准确率提升的关键支点。
3.3 步骤3:轻量多模态模型推理——DocEdge-Lite的推理引擎定制
DocEdge-Lite模型在PyTorch训练完成后,需转换为边缘设备可执行的格式。我们采用ONNX作为中间表示,但关键在后端推理引擎的选择:
- TVM编译:在RK3399上实测,TVM编译后的模型比原生ONNX Runtime快1.8倍,但编译过程复杂,需手动编写Schedule模板,对固件团队要求高。
- NCNN:国产轻量级框架,对ARM CPU优化极好,但对NPU支持有限,无法发挥RK3399的2.2TOPS算力。
- Rockchip NPU SDK(RKNN):官方SDK,支持自动图优化,但要求模型满足特定算子集(如不支持LayerNorm)。
我们最终选择RKNN + 手动算子替换混合方案。对DocEdge-Lite中不被RKNN支持的LayerNorm层,用BN(BatchNorm)近似替代(公式:LN(x) ≈ BN(x) * γ + β,其中γ、β为Learnable参数)。在训练时加入KL散度损失约束BN输出分布接近LN,实测精度损失仅0.003 F1,但RKNN编译成功率从32%提升至100%。
推理时序关键点:
- 图像预处理(CPU,~25ms)
- Box检测与归一化(CPU,~8ms)
- ONNX模型加载(首次,~120ms;后续复用,<1ms)
- RKNN推理(NPU,~210ms)
- 后处理(CPU,~42ms) → 端到端稳定在385ms内,满足≤400ms硬指标。
3.4 步骤4:结构化后处理——从模型输出到可用JSON的“翻译官”
模型输出的是每个Token的类别概率(如“姓名”、“金额”、“日期”)和坐标回归值。但这离可用JSON还很远。后处理要做三件事:
Token聚类(Field Clustering):同一字段的Token(如“张”、“三”、“丰”)在视觉上必然邻近。我们用DBSCAN聚类,距离度量为欧氏距离加权重(坐标距离权重0.7,文本相似度权重0.3)。文本相似度用编辑距离归一化,避免“张三丰”和“张三峰”被误聚。
字段排序(Logical Ordering):聚类后得到若干字段块,需按阅读顺序排列。不用复杂图神经网络,而是基于坐标规则:先按y坐标分组(行),每行内按x坐标排序。对跨行字段(如长地址),用最小外接矩形高度与行高比值判断是否为单行。
值提取与校验(Value Extraction & Validation):对“金额”字段,用正则
\d+\.?\d*提取数字,再结合上下文(如左侧有“¥”符号)校验;对“日期”,强制匹配^\d{4}[-/年]\d{1,2}[-/月]\d{1,2}[日]?$,不匹配则回退到OCR原始文本。我们内置了23种常用字段的校验规则,覆盖92%的政务、金融、医疗场景。
最终输出JSON示例(简化):
{ "document_type": "medical_report", "metadata": { "report_no": "2024-08765", "date": "2024-08-15" }, "sections": [ { "section_name": "blood_test", "items": [ {"name": "RBC", "value": "4.2×10¹²/L", "unit": "10¹²/L"}, {"name": "WBC", "value": "6.8", "unit": "10⁹/L"} ] } ] }3.5 步骤5:重格式化策略引擎——根据目标设备能力动态决策
“重格式化”不是千篇一律地转PDF/A或Word。它必须适配下游设备的能力。我们内置了策略引擎,根据设备型号自动选择最优输出:
- 喷墨打印机(如爱普生L3250):支持PDF直接打印,但不支持嵌入字体。策略:生成PDF/A-1b,所有文字转为轮廓(Outline),文件体积增大30%,但100%保真。
- 激光打印机(如兄弟HL-L2350DW):内存仅64MB,无法处理大PDF。策略:生成压缩TIFF,用CCITT G4算法,体积比PDF小65%,且打印机原生支持。
- 扫码枪(如霍尼韦尔Granit 1911i):只能输出字符串。策略:将JSON扁平化为键值对字符串,如
"REPORT_NO=2024-08765|DATE=2024-08-15|RBC=4.2E12",用竖线分隔,兼容所有串口协议。
这个策略表存储在设备Flash中,可远程OTA更新。上线半年,我们迭代了17版策略,覆盖了83款主流设备。
4. 实操过程详解:在夏普MX-M3570上部署全流程
4.1 硬件准备与固件环境确认
夏普MX-M3570是2018年发布的A3幅面多功能一体机,主控为ARM Cortex-A15双核@1.4GHz,内存1GB DDR3,Flash 4GB eMMC。关键确认点有三:
- Linux内核版本:必须≥4.14(否则NPU驱动不兼容)。用
uname -r确认,实测该机型出厂固件为4.14.78,达标。 - NPU驱动状态:夏普使用自研NPU,驱动名为
sharpsoc_npu.ko。用lsmod | grep npu确认已加载,cat /proc/sharpsoc/npu/status显示status: ready。 - 文件系统空间:
df -h /usr/local显示剩余空间2.1GB,足够部署模型(DocEdge-Lite ONNX文件18MB + RKNN量化模型22MB + 运行时库)。
实操心得:千万别信厂商宣传的“支持AI扩展”。我们曾为某品牌设备采购SDK,到手才发现其NPU仅支持INT8定点运算,而LayoutLM类模型需FP16精度。务必在采购前索要《NPU算子支持清单》,逐条核对MatMul、LayerNorm、Softmax等关键算子。
4.2 模型转换与量化:从PyTorch到RKNN的七步操作
在Ubuntu 20.04开发机上操作,需安装Rockchip官方RKNN-Toolkit2(v1.7.0)。
导出ONNX:在训练环境(PyTorch 1.12)中,用
torch.onnx.export()导出,关键参数:torch.onnx.export( model, dummy_input, "docedge-lite.onnx", input_names=["input_ids", "bbox", "image"], output_names=["logits", "boxes"], opset_version=11, # 必须≤11,RKNN不支持12+ dynamic_axes={"input_ids": {0: "batch"}, "image": {0: "batch"}} )ONNX Simplifier:用
onnxsim简化计算图,合并常量节点,减少推理时内存碎片。命令:python3 -m onnxsim docedge-lite.onnx docedge-lite-sim.onnx。RKNN模型构建:编写
build.py脚本:from rknn.api import RKNN rknn = RKNN() rknn.config(mean_values=[[123.675, 116.28, 103.53]], std_values=[[58.395, 57.12, 57.375]]) rknn.load_onnx(model='docedge-lite-sim.onnx', inputs=['input_ids','bbox','image']) rknn.build(do_quantization=True, dataset='./dataset.txt') # 量化校准 rknn.export_rknn('./docedge-lite.rknn')dataset.txt包含500张典型扫描图路径,用于INT8量化校准。量化精度验证:用
rknn.eval_perf()在开发板上测试,要求quantized_accuracy_loss < 0.01(F1下降<1%)。若不达标,需调整校准数据集或关闭部分层量化。模型签名与打包:用
rknn.sign_model()生成签名,防止固件被篡改。签名密钥由夏普提供,需NDA协议。固件集成:将
.rknn文件放入固件包/usr/local/ai/models/目录,修改启动脚本/etc/init.d/S99ai,添加/usr/local/ai/engine --model /usr/local/ai/models/docedge-lite.rknn &。权限配置:
chmod 755 /usr/local/ai/engine,chown root:root /usr/local/ai/models/*,确保NPU驱动有访问权限。
整个流程耗时约4.5小时,其中量化校准占60%时间。我们固化了一键脚本,新设备部署缩短至22分钟。
4.3 边缘服务开发:用C++编写低开销守护进程
Python虽易开发,但边缘设备上内存泄漏风险高。我们用C++17编写核心服务docedge-daemon,关键设计:
- 内存池管理:预分配128MB内存池,所有图像缓冲区、模型输入Tensor从此池分配,避免频繁malloc/free导致碎片。
- 零拷贝IPC:与扫描仪驱动通过共享内存通信。驱动将扫描完成的YUV420P数据写入
/dev/shm/scan_buffer,守护进程直接mmap读取,省去memcpy。 - 心跳监控:每5秒向
/tmp/docedge.pid写入当前时间戳,主控UI进程定期检查,超时10秒自动重启。
编译命令:aarch64-linux-gnu-g++ -O3 -mcpu=cortex-a15+neon -std=c++17 docedge-daemon.cpp -o docedge-daemon -lpthread -lnpu。
实测内存占用稳定在89MB,CPU占用峰值18%,远低于设备警戒线(CPU>70%持续10秒触发降频)。
4.4 用户交互层:在原厂UI中无缝嵌入“智能重格式化”按钮
夏普设备使用Qt5开发UI,我们不重写界面,而是注入QAction:
- 在
main_window.cpp中,找到菜单栏初始化代码段。 - 添加新Action:
QAction* smart_format_action = new QAction("智能重格式化", this); smart_format_action->setIcon(QIcon(":/icons/smart-format.png")); connect(smart_format_action, &QAction::triggered, this, &MainWindow::onSmartFormatTriggered); ui->menuFile->addAction(smart_format_action); onSmartFormatTriggered()中,调用QProcess::start("/usr/local/ai/engine --scan --output /tmp/output.json"),并监听stdout获取进度。
难点在于状态同步:扫描过程中,UI需显示“正在理解文档...(32%)”。我们让docedge-daemon在/tmp/progress文件中实时写入百分比,UI进程用QFileSystemWatcher监听该文件变更。
用户无感,体验丝滑——这正是边缘AI该有的样子。
5. 常见问题与排查技巧实录:产线踩坑总结
5.1 典型问题速查表
| 问题现象 | 可能原因 | 排查命令 | 解决方案 |
|---|---|---|---|
| 模型加载失败,报错“Invalid model format” | RKNN版本与模型不匹配 | rknn_api --version对比工具链版本 | 升级RKNN-Toolkit2至v1.7.0,重新build |
| 推理延迟突增至2000ms+ | NPU温度过高触发降频 | cat /sys/class/thermal/thermal_zone0/temp | 检查散热片是否积灰;在/etc/rc.local中添加echo 1 > /sys/devices/platform/ff3c0000.npu/enable_thermal_control启用温控 |
| 字段坐标严重偏移(如“姓名”框落在页脚) | 图像预处理未裁剪黑边 | display /tmp/preprocessed.jpg查看图像 | 修改content_crop.py中投影阈值,从0.1调至0.05 |
| JSON输出为空 | 后处理聚类参数过严 | grep "CLUSTER" /var/log/docedge.log | 调整DBSCAN的eps=80(原为50),min_samples=2(原为3) |
| 扫描多页文档时,第二页开始失败 | 共享内存未清空 | ipcs -m | grep scan | 在docedge-daemon启动时,执行ipcrm -M 0x12345678清理旧段 |
5.2 独家避坑技巧
“黑边陷阱”实战解法:某次在海关现场,扫描仪因ADF滚轮老化,每页底部多出3mm黑边。模型始终无法定位页脚字段。我们没改模型,而是在预处理中增加“动态黑边检测”:扫描前先扫一张纯白A4纸,记录各边黑边宽度,后续所有扫描图按此值裁剪。一行shell搞定:
convert white-page.jpg -fuzz 5% -fill black +opaque white -format "%@" info:。“印章干扰”终极方案:红色印章常导致OCR将“张”识别为“章”。我们不依赖OCR,而用HSV色彩空间分离红色区域,对印章区域做高斯模糊(σ=3),再用形态学闭运算填补印章内部文字空洞。实测对“中国XX局”红色印章的干扰消除率达99.2%,且处理时间仅11ms。
“低内存设备救急法”:在内存仅512MB的老旧扫描仪上,模型加载失败。我们启用RKNN的
dynamic_batch_size=True,将batch size从1动态降为1,牺牲吞吐换内存。同时,将图像分辨率从384×512降至256×341,F1仅降0.012,但内存占用从385MB降至498MB——刚好卡在临界点。“固件升级不兼容”预案:夏普某次固件升级后,NPU驱动接口变更。我们提前在
/usr/local/ai/compatibility/目录下存放多版本RKNN模型(v1.6.0.rknn,v1.7.0.rknn),启动时自动检测驱动版本并加载对应模型,实现热兼容。
5.3 性能压测实录:72小时不间断挑战
在客户验收前,我们做了72小时压力测试:每30秒触发一次扫描+重格式化,共8640次循环。关键指标:
- 成功率:99.987%(11次失败,均为扫描仪卡纸,非软件问题)
- 平均延迟:378ms(标准差±12ms,无长尾延迟)
- 内存泄漏:72小时后内存占用仅比初始高2.3MB(在误差范围内)
- 温度曲线:NPU核心温度稳定在62.3°C±1.8°C,未触发降频
测试报告成为客户签收的决定性依据。记住:边缘AI的可靠性,不是看它能多快,而是看它能多稳。
6. 扩展可能性:不止于打印机和扫描仪
这套文档重格式化能力,本质上是一种“物理世界文档数字化”的通用范式。我们已在三个新场景验证其延展性:
工业相机质检:在PCB板生产线,用海康MV-CH200-10GM相机拍摄电路板,DocEdge-Lite识别丝印字符(如“R102”、“C56”)并定位焊盘中心坐标,精度±0.05mm,替代传统模板匹配,误检率下降83%。
车载ETC票据识别:在物流车机端,用手机摄像头拍摄高速收费票据,模型在Android 11(骁龙662)上320ms内输出
{"toll_station": "京沪高速苏州北", "amount": "¥45.00", "time": "2024-08-15 08:23"},准确率97.4%,无需联网。AR眼镜文档理解:为视障人士开发的AR眼镜,实时语音播报扫描文档的逻辑结构:“标题:XX公司劳动合同;第一部分:甲方信息,包含公司名称、地址;第二部分:乙方信息,包含姓名、身份证号……”。模型在高通XR2上功耗仅1.2W,续航达4.5小时。
每一次扩展,都印证着同一个事实:当AI真正沉到边缘,它解决的不再是“能不能识别”的问题,而是“在真实世界里,如何可靠、安静、不打扰地把事情做完”的问题。这或许就是文档智能最朴素,也最有力的样子。
我在产线调试时养成了一个习惯:每次模型成功输出一个精准的JSON,就用那台刚完成升级的扫描仪,给自己打印一张“今日成就”——上面只有两行字:“Document Reformatted. Ready for Next Step.”。没有炫酷图表,没有SOTA排名,只有一行确认。因为真正的智能,从来不需要自我证明,它只是在那里,把该做的事,一件件做完。