FDE 系列教程|数据治理从入门到精通
数据都没有,做个屁的 AI 改造。
90% 的企业连数字化转型这一步都没有做,还想上 AI,还想做知识库,这不扯淡吗?
所以,FDE 进入企业,最重要的第一步就是数据治理。
纸质维修单还在档案柜里,产品手册有三个「最终版」,Excel 里的型号各有各的写法。这些东西不先理顺,后面不管接什么模型,都只会更快地给出错误答案。
下面就用一批纸质维修单、扫描版产品手册和 Excel 配件表,把企业数据从「看得见」处理到「查得到、算得准」。文中的型号和记录是模拟数据,处理方法可以直接用在企业项目里。
我的流程是:确认用途 → 盘点原件 → 扫描采集 → OCR 与解析 → 清洗核对 → 验收发布 → 持续维护。
先把 OCR 说清楚:它只负责把字认出来
OCR 的全称是 Optical Character Recognition,中文就是光学字符识别。它做的事情很具体:读取扫描件或照片里的字,输出可以复制、可以搜索的文本。
它不会自动把一份文档变成可信的企业数据。维修单上写着「AB-100」,OCR 可能认成「AB-10O」;表格里的字都认出来了,数量也可能跑到错误的配件名下面。它同样不知道两个同名文件中哪一个正在生效。
举个例子,eClinicalWorks 这家医疗技术公司要帮医疗机构处理大量传真。它的系统先读取传真,判断资料类型,再尝试匹配到正确的患者档案。427 家医疗机构用它处理了近 220 万份传真,每份最多节省一分钟,但自动识别和匹配成功率是 75%—85%。
匹配成功的资料继续流转,无法确认的资料进入人工核对。这条流程先把正常数据和问题数据分开,再分别处理。
第一步:确定数据要拿来做什么
同样一批维修单,售后人员可能只想查某台设备以前修过什么,仓库要统计用了多少配件,管理者则要看哪些型号经常返修。三个目标,数据处理的程度完全不同。
只做资料查询,先让每张维修单能按设备编号找到,打开以后能看到原件。要统计配件消耗,就要把配件编号、数量、单位和维修日期拆成字段。要分析返修,还得定义什么算一次返修。
第一批不要包含全公司的资料。先选一条产品线,把目标写成一句能验收的话:
text
1 | 售后人员输入设备编号, |
这句话定了第一批要收什么、要提取哪些字段、最后怎么测。
先盘点原件,不要看到纸就扫
桌上放着一本打印手册,不代表它没有电子原件。先找编写部门,再查共享盘、邮件附件和原有系统。能找到 Word、Excel 或原生 PDF,就直接读原文件,少做一轮 OCR。
接着建一张资料台账。每份资料至少记录六件事:
一份资料有了编号,后面的扫描件、OCR 文本、提取表格和清洗记录都继续用这个编号。出了问题,可以一路找回纸质原件。
原件保持收到时的样子,不在上面直接改字。后面所有纠错都改工作副本,同时记录改了什么、为什么改、谁确认的。
扫描时保住一份完整的电子原件
先整理纸张:一张单据有几页,背面有没有备注,附件属于哪张单。扫描前编号,扫描后马上对页数和顺序。原件六页,PDF 只有五页,就在纸还在手边时补扫。
如果用手机拍摄,打开原尺寸检查反光、阴影、透视变形和遮挡。直接读最小的字、型号里的字母、数字 0 和字母 O、小数点以及手写备注。
批量扫描前,先拿四类页面试一次:清晰打印页、细小表格、褪色复印件、带手写批注的页面。试扫样本能看清,再用同样的设置处理后面的文件。
自动裁边、去背景和去空白页最容易伤到浅色字、印章和签字。处理后的图片另存,不覆盖原始扫描图。人眼已经看不清的内容,直接标成「待核」,不让模型补全。
开始做 OCR:先选对文件,再选工具
原生 Word 和 Excel 直接读文件本身。有文字层的 PDF 先复制几段检查。整页是图片的 PDF,才需要 OCR。一批资料全部重做 OCR,反而可能把原本正确的文字做错。
扫描 PDF 只需要能搜索原文,可以用开源的 OCRmyPDF。它会在扫描页上增加一层文字,并可以处理倒置和轻微歪斜的页面。
安装 OCRmyPDF、Tesseract 以及中英文语言包后,一份扫描件可以这样处理:
bash
1 | ocrmypdf -l chi_sim+eng \ |
searchable.pdf 是可以搜索的 PDF,ocr.txt 是识别出来的文本。处理完成后,用原件里明确存在的设备型号做搜索,再复制一段包含数字和单位的文字与原图对照。
常见问题有三个:语言包没装对,中英文混排的型号识别很差;页面方向判断错误,整页被旋转;原图分辨率太低,怎么换参数都不稳定。先在样本上试,检查旋转结果,重点核对型号和数字。原图太差就重扫,不要在错误的输入上反复换模型。
OCRmyPDF 的安装和参数可以查看
。
表格和版式不能只靠 OCR
产品手册里有标题、段落、图片和表格。OCR 可以把字认出来,却不一定保得住它们之间的关系。第一列的配件名如果和第二列的数量错了一行,产出的表格看起来仍然整齐,数据却已经不能用。
这类文档可以用 PaddleOCR 的 PP-StructureV3。它会先找出页面中的文字区、表格和其他版面区域,再输出识别文字、表格单元格和阅读顺序等结果。项目入口在
。
先选三份样本:纯文字页、复杂表格和模糊扫描件。处理后看三件事:表头有没有被拆错,单元格有没有串行,结果能不能找回原页。
跨页表格、合并单元格和无边框表格最容易出问题。处理时保留原页,把提取结果放在旁边对照。表格结构不稳定,就让它进入待核,不直接加入统计。
清洗数据:能按规则改的才批量改
OCR 和表格解析完成后,先处理能明确判断的问题:去掉字段前后多余空格,统一已经确认的日期格式,清理反复出现的页眉,把识别时拆开的同一段合回去。
每条被修改的数据,至少保留这几项:
text
1 | 原始值:AB-10O |
如果只有 OCR 结果里的「AB-10」和「AB-100」,就不能凭长得像直接合并。可能是 OCR 漏了一个数字,也可能真有两个型号。先标记疑似问题,再对照原图和已经确认的产品清单。
缺失值也不能顺手补成零。维修单没写配件数量,代表「没有记录」;填成零,就变成了「确认没有消耗」。原件模糊、原件未填和字段不适用,分别标记。
用 OpenRefine 处理同一列里的不同写法
OpenRefine 是一个开源的表格清洗工具。它适合把一列里的不同写法集中摊开,找出空格、错别字和相似名称。每次修改都会记录在操作历史里,发现改错可以撤回。
把配件表导入 OpenRefine 后,先确认中文编码,并把设备编号、配件编号这类字段设为文本,避免 00125 变成 125。
在目标列里选择 Facet → Text facet,可以看到每种写法和出现次数。先用 Trim leading and trailing whitespace 清掉首尾空格,再用 Cluster and edit 找相似值。
比如「售后部」「售后部门」「售后服务部」,工具会把它们放到一起供人选择,但不会在没有确认的情况下替换。先让业务负责人确认是否指向同一个部门,再合并。「售后部」和「售后服务有限公司」看起来很像,也可能是两个完全不同的主体。
OpenRefine 可以在
下载。
Excel 要先把字段和口径说清楚
一列写着「维修日期」,它到底是报修日期、开工日期,还是维修完成日期?「配件数量」是本次领用,还是历史累计?「一套」和「一件」能不能直接相加?
程序可以发现两列的格式不一样,但不知道业务上是不是一回事。字段的含义、单位的换算和记录的唯一标识,由业务负责人确认。
一条维修记录整理前后可以变成这样:
text
1 | 收到的记录: |
设备编号必须按文本保留,否则前面的零会丢失。数量和单位要拆开,否则无法稳定汇总。「补录」不能被猜成第二次维修,「套」也不能在没有换算规则时改成「件」。
遇到合并单元格,只在它原本覆盖的行里向下填充。复杂表头拆开后保留上下文:「上半年/维修/数量」和「下半年/采购/数量」不能都变成「数量」。明细行和合计行也要分开,避免统计时算两次。
重复、版本和权限,要分开处理
找重复文件,可以先用文件指纹找出完全相同的副本。同一张纸扫描两次,文件指纹可能不同,再按资料编号、页面内容和来源人继续比对。
表格里的记录也不能只按「设备编号+日期+配件」删除重复。同一台设备在同一天可能领用两次同一种配件。只有找到维修单号、明细行号或其他业务唯一标识,才能确认是否重复。
版本处理先记录适用型号、设备批次、生效时间和替代关系。「修改时间更新」不能证明「当前有效」。旧设备的历史维修记录,仍然要保留它当时使用的手册版本。
从维修单提取出来的文本和表格,继承原文件的访问范围。原始 PDF 只有售后组能打开,旁边的清洗表也不能向全员开放。给外部人员做故障分类统计,另外生成去掉客户姓名和联系方式的用途副本。
验收要打开数据看,不是看程序有没有报错
程序运行成功,只能证明它跑到了最后一步。先用程序检查可以明确判断的问题:是否有文件没有处理状态,必填字段是否为空,日期能否识别,设备编号能否在设备清单中找到,清洗记录能否返回原文件。
清洗结果是 CSV 时,可以用开源的
直接查询:哪些设备编号为空,哪些维修单号重复,哪些配件编号在已经确认的配件清单里不存在。这一步用固定规则查异常,不需要让大模型猜。
再做人工抽查。清晰打印页、模糊扫描件、复杂表格和手写记录分别抽样,重点对照型号、日期、数量、单位和会影响业务处理的条款。只抽到清晰页,结果一定会偏好。
数量、单位和适用版本存在未解决的错误,对应记录就不进入正式统计。不影响当前用途的缺口,保留说明后交给业务负责人决定是否接收。
新资料不要继续按旧方式制造问题
历史资料清理完以后,新的维修单还会不断产生。这时候反过来改资料入口:设备编号设为必填,配件从已经确认的清单里选,数量和单位分开填,同时记录经办人。
纸质表单暂时不能取消,就先统一表格版式、填写要求和扫描交接方式。否则每个月都要重新修同样的部门简称、缺失型号和模糊图片。
每次处理按批次记录:收到什么文件,使用什么规则,哪些成功,哪些失败,哪些在等人确认。失败后只重跑有问题的部分。规则改了,就根据批次找回受影响的数据重新检查。
人工已经确认过的修改不能被下一次程序运行直接覆盖。保留原始识别结果,再叠加人工确认的修正。两者冲突时,记录重新进入待核。
开源工具怎么组合
资料主要是扫描档案,目标是搜索原文,先用 OCRmyPDF 生成可搜索 PDF,加上资料台账和人工抽查就能开始。
资料里有大量复杂表格,后面还要统计,用 PaddleOCR 做版面和表格解析,用 OpenRefine 统一杂乱字段,再用 DuckDB 查缺失、重复和无法匹配的记录。
资料需要长期更新,再在这条流程上增加接收入口、批次状态、失败重试、人工确认和发布管理。企业要求数据不出内网,这些工具和数据就都放在企业允许的环境里。
数据准备好了,再谈知识库和 AI
AI 可以帮忙标出疑似错字、给出分类建议、整理字段冲突,但它的结果先进入待核队列,不直接覆盖正式数据。
产品手册已经分清版本和适用型号,就可以接入知识问答。维修记录已经拆好字段和单位,就放在可以查询的表里。用户查某台设备的历史,系统返回记录和原件;用户问配件用量,先用确定的查询得出数字,再让模型解释。
暂时不接 AI 也没关系。售后人员已经能按设备编号找到正确资料,仓库能按统一口径核对配件,新资料进来后也有固定的处理方式。这时候数据已经能用,后面换知识库、换模型,也不用从纸堆里重来一遍。








