
一、承接上篇:单张能去,批量才是生产力
上篇的 AI 去水印解决了"精准去除单张图 / 单份 PDF"。但企业真实场景是:成百上千张带公司水印的扫描件、固定位置的资料图,需要一次性清理------而且绝不能联网(隐私 + 版权合规),任何单项失败都不能中断整体。
二、纯离线推理:LaMa-ONNX + onnxruntime-cpu
批量链路的核心是在完全离线下跑深度学习修复:用 lama_fp32.onnx 模型 + onnxruntime-cpu 做纯 CPU 推理,禁止任何联网下载。这样即使在隔离内网,也能高质量去水印。
导入支持文件夹(JPG/PNG)与单 / 多 PDF;用户只需框选一次矩形作为样例,系统据此批量套用。后台任务具备开始 / 停止、进度、成败统计;提供极速 OpenCV 与 LaMa-ONNX 高质量两档模式。
针对超大图,采用局部裁剪 + 边缘高斯融合,既保速度又无接缝。单项失败被隔离,不影响其余文件;最终自动输出到结果目录,并生成失败项记录,方便补跑。
PDF 处理分两条路:原生 PDF 优先删除内部水印对象(保留文字可检索),扫描类 PDF 则逐页渲染 → 局部推理 → 重新合成。全链路兼容 Windows 中文路径。
批量去水印(示意):单项隔离,失败不中断
for f in files:
try:
run_lama_onnx(f) # 离线 CPU 推理
except Exception as e:
fail_list.append((f, e)) # 隔离失败项
三、踩坑实录:路径、包名、灰斑
坑 1:LaMa-ONNX 默认路径解析错误。 源码里用 parents4 取模型路径,实际应为 parents3,导致找不到权重。修正索引后即正常。
坑 2:包名写成 onnx-runtime。 真实 PyPI 包名是 onnxruntime(无横线),装错就 ImportError。统一包名后解决。
坑 3:整图变灰。 与上篇同源的 Mask 解码问题,在批量链路里复用同一套修复逻辑后,灰斑消失。
批量去水印的工程要点
和单张去水印最大的不同,是"稳"字当头。离线是第一约束------用 lama_fp32.onnx + onnxruntime-cpu 纯 CPU 推理,禁止任何联网,隐私与版权都兜住;隔离是第二约束------单项失败只进失败项记录,其余照跑,最后按记录补跑即可,不必从头再来;可复用的是第三约束------固定位置资料只框选一次矩形,全批套用,省掉重复劳动。
PDF 分两条路最省事:原生 PDF 直接删内部水印对象,文字仍可检索;扫描件才逐页渲染→局部推理→重新合成。超大图局部裁剪 + 边缘高斯融合,既快又无接缝。Windows 中文路径全程兼容,不必改名搬目录。导入支持文件夹(JPG/PNG)与单/多 PDF,后台任务具备开始/停止、进度、成败统计,极速 OpenCV 与 LaMa-ONNX 高质量两档随选。
把去水印从单张升级到批量,本质是把一次性的手工活,变成一条可编排的生产线。离线是第一前提,隔离是第二前提,可复用是第三前提------三条凑齐,几百份带水印的扫描件才能一键清干净,人只需要框一次样例。对企业来说,这意味着原本要占用专人几周的资料清理,现在一个下午就能交付,而且每一份的成败都有记录可查。更关键的是,全程不联网,资料从进到出都不出内网,版权与隐私都兜得住,这件事本身比快更重要。对合规岗而言,可审计、可补跑,比一次成功更安心。
这套离线批量链路,后来成了质检与档案部门日常离不开的基础设施。它的价值不在某一次修复多惊艳,而在每一次都稳:不联网、不中断、可补跑、有记录。对企业来说,这意味着原本要占用专人几周的资料清理,现在一个下午交付,且每一份的成败都可查。不过文档清干净之后,真正的价值是能被检索和问答------这正是下一篇要讲的本地知识库。资料干净了,知识才用得上。清得干净,只是让文档重新变得可用的第一步;后面能不能被检索和复用,才是资产化的关键。这一步想通了,后面的智能问答才顺理成章。
本阶段使用建议
隔离内网直接跑 LaMa-ONNX,纯 CPU 推理无需联网;
固定位置资料只框一次样例矩形,全批复用;
单项失败看失败项记录,补跑即可,不重来;
原生 PDF 优先删对象保文字,扫描件才逐页渲染;
注意包名是 onnxruntime(无横线),模型路径索引用 parents3。
四、小结
批量去水印的价值不在"更聪明",而在"更稳"------离线、隔离、可补跑。当几百份资料能一键清干净,文档资产才真正可被复用。
下期预告:文档已经能转、能盖、能去水印,也清得干净。但要让工具"读懂"文档做问答,先得把向量底座打牢------下一篇讲本地 BGE 嵌入模型、ChromaDB 与外部 Milvus 怎么接进来。
标签:#批量去水印 #ONNX #onnxruntime #离线推理 #RAG前置