首页
/ 이슈와 논점 ← 刊物系列名

이슈와 논점 ← 刊物系列名

2026-09-07 14:13:12作者:齐冠琰

이슈와 논점 ← 刊物系列名

코로나-19 관련 보험약관상 재해보험금 지급문제 및 개선과제 ← 主标题

들어가며 1 ← 第 1 节(标题自带序号 1)

코로나-19 관련 보험 현황 2 ← 第 2 节

문제점 3 ← 第 3 节

개선과제 4 ← 第 4 节

맺으며 5 ← 第 5 节


节内子标题如 `(1) 「감염병의 예방 및 관리에 관한 법률」 개정`、`(2) 생명보험 표준약관 재해분류표`、`(3) 보험사의 보험금 지급실무상 혼선 초래` 等同样以 `##` 呈现。可见该版式下 Docling 将一级版面标题统一映射为 Markdown 的 `##`,而原稿段落中的“标题自带序号”(如“들어가며 1”)被原样保留在标题文本内,未被剥离。

### 3. 表格被还原为 GitHub Flavored Markdown 管道表

第 2 页的「[표 1] 감염병예방법 제2조제2호 개정전·후 비교」(表 1:传染病预防法第 2 条第 2 号修订前后对比)被完整转换为标准管道表,标题以普通段落行紧邻表格上方输出:

```markdown
[표 1] 감염병예방법 제2조제2호 개정전·후 비교

| 구분 | 개정전 | 개정후 |
| - | - | - |
| 분류 | 1군 감염병 | 1급 감염병 |
| 분류 기준 | ◦ 마시는 물 또는 식품을 매개로 발생하고 집단 발생의 우려가 큰 감염병 | ◦ 생물테러감염병 또는 치명률이 높거나 집단 발생의 우려가 커 높 은 수준의 격리가 필요한 감염병 |
| 대상 질병 | ◦ (6종) 콜레라, 장티푸스, 파라 티푸스, 세균성이질, 장출혈 성대장균감염증, A형간염 | ◦ (17종) 에볼라, 페스트 등 * 좌측 6종(2급 감염병 분류)은 미포함 |
| U코드 | ◦ 대상질병에 U코드 없음 | ◦ 대상질병에 U코드 일부(3종) 포함 ① 신종감염병증후군 → 코로나19(U) ② 중증급성호흡기증후군(SARS) (U) ③ 중동호흡기증후군(MERS)(U) |

注意两处细节:其一,原 PDF 中“表 1 修订前后比较”的每个单元格跨越多行,Docling 的表格导出(compact_tables=True)把折行合并为单行并以空格连接;其二,表内项目符号(◦、①)与空格被原样保留,说明该导出路径是“以版面单元文本为最小输入”的无损合并而非重排。基准数据生成代码中 doc_result.document.export_to_markdown(compact_tables=True)verify_utils.py)正是这一“紧凑表格”开关的出处。

4. 图片只剩 <!-- image --> 占位注释

Markdown 产物中没有图片二进制或 caption 文本,仅在图片锚点处输出占位注释 <!-- image -->,全文共出现 3 处(第 1 行页眉 logo 区域、第 39 行与第 164 行正文插图处)。对照 doctags 中 <picture> 标签出现位置完全一致。也就是说:该 Markdown 基准不承诺图片内容保真,只承诺“图片的位置与存在性”被标记出来。若需要在导出后回填图片,可参考 docs/examples/export_figures.py 一类基于 DoclingDocument 的图片导出流程,另行消费。

5. 脚注以正文流内嵌方式保留

韩国研究简报有大量脚注(编号 1)10))。在 Markdown 产物中它们并非标准 Markdown 脚注语法,而是以“正文中保留引用号 + 脚注全文按阅读顺序排布为普通段落”的形式落地,例如:

한편 코로나-19가 전 세계적 유행단계에 돌입한 와중에 국내 보험업계에서는 코로나-19를 과연 질 병으로 보아야 할지, 상해 1) 나 재해 2) 로 보아야 할지

1) 손해보험의 표준약관 규정에 따르면, 보험기간 중에 발생한 급격하고도 우연한 외래의 사고로 신체에 입은 상해라고 규정하고 있는데, ...
2) 생명보험은 표준약관 '재해분류표'에서 '우발적인 외래의 사고'를 재 해라고 정의하며 ...

对于“正文引用处含上标号、页面底部有脚注定义”的复杂版面,Docling 会把脚注识别为独立 body 元素并按阅读顺序插入,其语义由 doctags 的 <footnote> 标签承载;Markdown 基准因此能用来锁定脚注不被遗漏、不被张冠李戴。同时可以观察到多栏 PDF 中被分行的韩文(如 “재 해”、“질 병”、“보 험금”)在导出后被合并成连续词组,说明导出层完成了连字符/断行粒度的文本规整。

样本内容总览:这份“标准答案”究竟记录了怎样一份文件

为便于读者核对基准文本的覆盖范围,这里给出 normal_4pages.md 的完整内容结构(以韩文原标题为准,附中文说明)。这也是该样本在端到端测试中能够覆盖“多级标题 + 表格 + 多栏 + 脚注 + 插图 + 页眉页脚”多种元素的原因:

  • 刊头区:발행일 2020년 4월 2일(2020-04-02 发行)、발행처 국회입법조사처(韩国国会立法调查处)、제1695호(第 1695 号)等元信息以普通文本段落输出;
  • 摘要:指出 2020.1.1 起《传染病预防法》相关条款变更后,WHO 将 COVID-19 认定为“全球大流行(Pandemic)”,引发保险实务中对“住院/死亡的灾害认定”的混淆,文章旨在梳理条款现状、问题并给出改进方案;
  • 들어가며(引言):截至 2020.3.30 韩国确诊 9,661 人、死亡 158 人;WHO 于 2020.3.11 宣布进入大流行阶段;争论焦点是 COVID-19 属于“疾病”“伤害”还是“灾害”——这一节附带第 1)、2) 号脚注,分别给出损害保险与生命保险标准条款对“상해(伤害)”与“재해(灾害)”的定义,并引出 KCD 的 S80~Y84 / U00~U99 分类代码背景;
  • 코로나-19 관련 보험 현황(COVID-19 相关保险现状):分四个子节展开——(1) 《传染病预防法》修订前后对比(即上文的表 1,涉及 1군→1급 感染病分级、6 种→17 种目标疾病、U 代码引入);(2) 生命保险标准条款“灾害分类表”虽然把第 1 级传染病列为保障对象,却将 U 代码(U00~U99)疾病如 SARS(U04.9)、MERS(U19.9) 排除,COVID-19 的疾病代码 U07.1 因此可能被解释为不支付灾害保险金;(3) 《条款规制法》第 5 条的“起草者不利解释原则”(약관의 뜻이 명백하지 아니한 경우에는 고객에게 유리하게 해석); (4) 生命保险业界以“可测风险(Measurable Risk)”为由主张原则上不予保障;
  • 문제점(问题点):(1) 若保险公司主张 U07.1 属免责事由,将违背作为上位法的《传染病预防法》修法宗旨;(2) 金融监督当局未能及时修订生命保险标准条款;(3) 业界依据大数法则(第 8 号脚注)与收支相等原则(第 9 号脚注)认为新发传染病的风险率不可测算,导致各公司给付口径不一;(4) 面对气候、传染病等新风险,保险商品开发能力不足;
  • 개선과제(改进课题):(1) 依据条款规制法与“事故发生当时适用法律”的条款约定,重新审视灾害保险金给付;(2) 呼吁监督当局尽快完成标准条款修订并采取积极政策;(3) 建议开发传染病保险、参数保险(Parametric Insurance,第 10 号脚注详述其“以降雨量、风速等客观指标赔付而非实损赔付”的运行机制)、指数保险(Index Insurance)等新形态商品;
  • 맺으며(结语):COVID-19 具备“偶发性外来事故 + 急剧性”的灾害属性,建议监督当局与业界尽快完成制度性补正;末段为刊物说明(为议员立法活动服务的信息通讯,编号 ISSN 2005-744X 等在页脚中被剔除)。

上述所有事实性表述(病例数、WHO 声明日期、法律生效日、疾病分类代码 U07.1 等)均可在基准文本 normal_4pages.md 的对应段落中直接查证,本文不做任何扩充性转述。

基准如何被“喂”进回归测试:四种检查一次跑全

normal_4pages 为代表的 PDF 基准由端到端测试驱动。核心入口是 tests/test_e2e_conversion.py 中的 test_e2e_pdfs_conversions():它遍历 tests/data/pdf/sources/ 下全部 PDF,逐份调用 converter.convert(...),再对每一份执行 verify_utils.pycheck_conversion_result_v2() 的四项独立检查:

  1. cells:比对预测页与 *.pages.meta.json 的逐页版面单元数(normal_4pages 对应 [60, 120, 80, 82]);
  2. docitems:将预测的 DoclingDocument*.json 基准做结构化比对(标题、文本、表格、图片等条目的逐项校验);
  3. markdown:把预测文档用 export_to_markdown(compact_tables=True) 导出、经 _normalize_newlines() 统一换行后,与 *.md 基准文本比较;
  4. doctags:把 export_to_doctags() 结果与 *.doctags.txt 比较(对列入 SKIP_DOCTAGS_COMPARISON 的样本可关闭)。

值得注意的设计:check_conversion_result_v2 不会“一个检查失败即中断”,而是把每个失败收集为 VerificationFailure 并全部汇报,保证一份坏文档不会掩盖其他文档的真实状态;test_e2e_pdfs_conversions 最终将结果渲染成 PASS/FAIL 表格后统一断言。此外在 generate=True(基准再生成模式,开关见 tests/test_data_gen_flag.py)下,同一函数会把四个基准文件全部重写——这保证“基准”与“校验逻辑”同源、可再生成,而不是手工维护的死数据。

要在本地复现回归:

# 在仓库根目录执行:转换并校验全部 PDF 基准
python -m pytest tests/test_e2e_conversion.py -q

# 单独校验多页样本的“页面全部到位”行为
python -m pytest tests/test_failed_pages.py -q

控制样本的双重身份:既是基准,也是“正常对照”

normal_4pages 不仅在 markdown 基准层被使用,还被 tests/test_failed_pages.py 用作“正常 PDF”对照:该测试用 StandardPdfPipeline + PdfPipelineOptions(do_ocr=False, do_table_structure=False) 配置转换该文件,并断言其转换状态为 ConversionStatus.SUCCESSresult.document.pages 恰好包含 1..4 全部页码、且 result.errors 为空。它验证的正是 docling-core 的“即使个别页面解析失败,也要保留失败页以保证页码连续与分页标记正确”这一修复(见文件头部注释引用的 docling-core PR 466)在完全正常的 4 页 PDF 上不会误伤。换言之,normal_4pages 是测试矩阵中的“黄金基线”:正常文档必须不触发任何失败页逻辑,而 markdown 基准又必须与版面预测严格一致。

消费同一份数据的另一入口:直接加载 JSON 做下游实验

normal_4pages 的转换结果还被镜像到示例数据目录 docs/examples/data/normal_4pages.json,并被 docs/examples/trivial_chunking.py 直接消费。该示例实现了一个“透传 chunker”:子类化 BaseChunker 后把 DoclingDocument 中的每个 DocItem(标题、文本、表格、图片…)按阅读顺序输出为一个 DocChunk,不分组也不合并,使下游可做元素级索引。运行方式为:

python docs/examples/trivial_chunking.py
登录后查看全文
热门项目推荐
相关项目推荐