Back to blog

简历不只是一串文字:版面感知解析的第一步

简历不只是一串文字:版面感知解析的第一步

把一份简历从 PDF 复制到纯文本文件,字符看起来几乎一个不少,信息却可能已经错了:左栏的联系方式插进右栏的工作经历;同一行的公司、岗位与日期被拆成三个段落;技能栏中的短语被接到教育背景后面。问题不在“有没有识别出字”,而在文档原本用空间表达的关系丢失了。

传统自然语言处理习惯把输入看成一串有顺序的词。但简历同时是一张页面:字号区分标题与正文,横向对齐连接公司与任职时间,缩进暗示项目从属于哪段经历,留白划分模块。简历解析若只保留文本序列,就等于在理解之前主动删除一部分证据。

OCR 解决字符,版面分析恢复关系

一条完整的文档理解链路至少包含三个不同任务。

第一层是字符识别:图片里写了什么。第二层是版面恢复:文字块在哪里,哪些属于标题、段落、列表或表格,阅读顺序是什么。第三层才是业务信息抽取:哪一段是工作经历,其中的公司、岗位、日期和职责分别是什么。

这三层会互相影响,但不能混为一个“准确率”。OCR 把“2018”识别成“201B”是字符错误;字符全部正确、双栏却从左到右逐行交叉,是阅读顺序错误;版面正确但把客户名称当成雇主,则是语义与字段归属错误。只有保留中间结果,团队才知道应该修 OCR、布局模型还是字段模型。

同一份简历在纯文本视角与页面视角下保留的信息不同
同一份简历在纯文本视角与页面视角下保留的信息不同

2019 年的两个数据集改变了问题定义

版面理解长期受限于可用数据。IBM 发布的 PubLayNet 通过匹配 PubMed Central 中论文的 XML 与 PDF,自动构造了超过 36 万张页面图像,标注文本、标题、列表、表格和图片等区域。它的重要意义不只是规模,而是证明结构化源文件可以成为版面标注的“弱标签”,显著降低逐页框选成本。

同年发布的 FUNSD 把任务推进到更细粒度的表单理解:数据集不仅标出文字框,还标注问题、答案、标题等语义类别及它们之间的连接关系。对简历而言,这种关系视角尤其重要——“2017–2020”本身只是一段日期,连接到哪家公司和岗位,才决定它的业务含义。

但研究数据集与真实简历之间仍有明显距离。论文页面类别相对固定,表单也常有明确的键值关系;简历却高度自由,模板、语言、字体、图标、双栏和时间线都可能变化。因此,直接迁移一个公开数据集上的模型并不能完成生产解析,它更适合提供预训练能力与评估方法。

LayoutLM:让词同时拥有内容和位置

2020 年初公开的 LayoutLM 给出了一条影响深远的路线:在 BERT 式文本表示之外,为每个词加入二维位置嵌入,并在预训练阶段结合页面图像信息。模型看到的不再只是“产品经理 2018 2020”,还知道这些词在页面上的坐标和相对关系。

论文在表单理解、票据理解和文档分类基准上报告了相对既有方法的提升。这些结果不能直接换算成“简历字段准确率”,却支持一个更基础的判断:文本与布局联合建模,比先把页面压扁成字符串再抽取信息更合理。

需要注意的是,位置也不是语义本身。同一份简历换一个模板,标题可能从左侧移动到顶部;扫描倾斜会让坐标漂移;OCR 分词变化会改变文字框。好的模型应学习相对位置、邻近关系和区域结构,而不是记住“页面左上角一定是姓名”。

一条可落地的版面感知链路

工程上不必等待一个端到端模型包办所有事情。可以先把页面证据完整保留下来,再逐层处理。

版面感知简历解析从文件恢复到字段证据的处理链路
版面感知简历解析从文件恢复到字段证据的处理链路

文件进入系统后,首先判断它是带文本层的 PDF、扫描件还是混合文档。原生文字与 OCR 结果都应保存页码和坐标,而不只是拼接后的字符串。随后进行区域检测、行列聚合与阅读顺序恢复,再识别“个人信息、工作、教育、项目、技能”等模块。最后在模块内部抽取记录和字段,并把每个结果连接回原文框。

这条链路有几个值得坚持的数据约定:

  • 原始字符、规范化字符和业务标准值分开保存;
  • 每个文字块保留页面、坐标、OCR 置信度和来源;
  • 阅读顺序作为可修改的结构,而不是写死在纯文本中;
  • 工作经历先分记录,再抽取公司、岗位、日期和职责;
  • 字段结果保存证据框,低置信结果允许人工回看原页。

如果只保存最终 JSON,错误发生后便很难重算;如果保留页面级证据,替换布局模型或字段模型时无需重新上传原文件,也能对单层结果重新处理。

怎样建立真正有用的测试集

随机抽几百份简历计算一个总体分数,往往会掩盖版面问题。测试集应该按文档形态分层:单栏与双栏、原生 PDF 与扫描件、有无表格、中文与英文、模板来源、页数以及图片质量。每一层同时检查字符、区域、阅读顺序、记录边界和字段准确性。

对布局尤其应该测“关系是否保持”:公司是否与正确岗位相连,日期是否属于正确经历,跨页职责是否被合并,侧栏技能是否误入主栏。区域检测框看起来漂亮,不代表最终记录关系正确。

还要保留一组持续增加的困难样本。每次线上出现新的模板或错误类型,都将脱敏后的结构特征加入回归测试。版面解析不是训练一次便结束的模型,而是一套随着文档分布变化持续维护的能力。

版面感知真正带来的改变

它改变的不只是模型输入,还改变了系统如何解释结果。纯文本抽取只能说“模型找到了这个公司名”;版面感知系统可以进一步说明它位于第几页、哪个区域,与哪段日期和职责相邻。对于需要人工核验、错误追踪和后续模型迭代的招聘数据,这种证据链往往比单次分数更重要。

简历当然包含语言,但它首先是一份文档。先恢复页面怎样组织信息,再理解文字表达什么,是从“能提取几个字段”走向稳定文档智能的第一步。

资料来源

Back to blogRequest a trial