538 lines
13 KiB
JSON
538 lines
13 KiB
JSON
{
|
|
"origin": "Self-created deterministic PDF syntax, Helvetica Standard-14 text and vector paths; no third-party document content.",
|
|
"generator": "../generate_headings.py",
|
|
"documents": [
|
|
{
|
|
"file": "transformed-form.pdf",
|
|
"bytes": 1236,
|
|
"sha256": "55b6ee047e70b0dc463ac4b59ab3464bbb45a4cab12521ba23de41bc95197b98",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Form heading",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
70,
|
|
102,
|
|
240,
|
|
130
|
|
]
|
|
}
|
|
],
|
|
"form_matrix": [
|
|
1.5,
|
|
0,
|
|
0,
|
|
1.25,
|
|
55,
|
|
70
|
|
],
|
|
"local_baseline": [
|
|
10,
|
|
30
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "rotated-tags.pdf",
|
|
"bytes": 1095,
|
|
"sha256": "8f2b850785b13d0de9ada1e8e31b15e6fe381f444eaaa1397acda481d1612c1e",
|
|
"expected": {
|
|
"pages": 1,
|
|
"crop_box": [
|
|
20,
|
|
30,
|
|
280,
|
|
230
|
|
],
|
|
"rotation": 90,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Rotated first",
|
|
"level": 1,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
50,
|
|
168,
|
|
170,
|
|
190
|
|
]
|
|
},
|
|
{
|
|
"page": 0,
|
|
"title": "Rotated second",
|
|
"level": 3,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
60,
|
|
78,
|
|
180,
|
|
96
|
|
]
|
|
}
|
|
],
|
|
"order": "structure order, intentionally different from content-stream draw order"
|
|
}
|
|
},
|
|
{
|
|
"file": "cross-page-structure.pdf",
|
|
"bytes": 2001,
|
|
"sha256": "52ec19216440feebdb80b2d25339282b82b219a017fdf7c057c618f92db89373",
|
|
"expected": {
|
|
"pages": 2,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Across page one middle",
|
|
"level": 1,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
40,
|
|
55,
|
|
230,
|
|
78
|
|
]
|
|
},
|
|
{
|
|
"page": 1,
|
|
"title": "Across page two",
|
|
"level": 1,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
40,
|
|
205,
|
|
170,
|
|
228
|
|
]
|
|
},
|
|
{
|
|
"page": 1,
|
|
"title": "Following heading",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
40,
|
|
155,
|
|
180,
|
|
178
|
|
]
|
|
}
|
|
],
|
|
"scope": "One heading spans two page-local Span elements with an interleaved direct MCR; MCID 0 is reused independently on both pages. Results are page-local fragments."
|
|
}
|
|
},
|
|
{
|
|
"file": "vector-heading.pdf",
|
|
"bytes": 787,
|
|
"sha256": "0083680fe3b8d27525b4e9b442155444095b19a9f3d7921696531be12dcf2175",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Vector section",
|
|
"level": 4,
|
|
"precision": "page",
|
|
"reason_contains": "座標"
|
|
}
|
|
],
|
|
"drawn_region_pt": [
|
|
40,
|
|
180,
|
|
190,
|
|
200
|
|
],
|
|
"fallback": "No text glyph bounding box is available for the marked vector path."
|
|
}
|
|
},
|
|
{
|
|
"file": "form-only-structure.pdf",
|
|
"bytes": 1167,
|
|
"sha256": "4ad6e541fe9df9d656ad78eb477a751eafa22f9147a501dfed68b4fd3ef6e235",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Form only heading",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
50,
|
|
125,
|
|
190,
|
|
147
|
|
]
|
|
}
|
|
],
|
|
"scope": "Form StructParents and source-qualified MCR; no page StructParents."
|
|
}
|
|
},
|
|
{
|
|
"file": "form-vector-mcid-collision.pdf",
|
|
"bytes": 1352,
|
|
"sha256": "bc37979a4cb8a96872fb43c75b183aa82ac64c5934844e8233b79e7910640128",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Page vector heading",
|
|
"level": 1,
|
|
"precision": "page",
|
|
"reason_contains": "MCID"
|
|
}
|
|
],
|
|
"fallback": "MCID 0 names a page vector and unrelated Form text. Non-text page objects must participate in stream collision detection."
|
|
}
|
|
},
|
|
{
|
|
"file": "named-property-rolemap.pdf",
|
|
"bytes": 1321,
|
|
"sha256": "2da7e79e65977378ce7f2114bbfa3df1a23181c633cf7988d533388b4e89f142",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Named property heading",
|
|
"level": 3,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
50,
|
|
127,
|
|
190,
|
|
142
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "nested-form-matrix.pdf",
|
|
"bytes": 1791,
|
|
"sha256": "8d872ae76bbd8164b34a4fb9d1a0b2cc73f900f5b2349f5486b10079b7442084",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Nested heading",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
82,
|
|
161,
|
|
245,
|
|
181
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "different-form-same-mcid.pdf",
|
|
"bytes": 1800,
|
|
"sha256": "d337fb72b0434370a15b1d8470dca33e5492fe4cc01f352506a947fb135cfcf5",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Second form",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
90,
|
|
87,
|
|
170,
|
|
102
|
|
]
|
|
},
|
|
{
|
|
"page": 0,
|
|
"title": "First form",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
40,
|
|
207,
|
|
105,
|
|
222
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "ambiguous-form-matrix.pdf",
|
|
"bytes": 1838,
|
|
"sha256": "25103b29c1fc392378f69e66f480e480868d1d85f764f431bb6002cba3f213ce",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "First structure",
|
|
"level": 2,
|
|
"precision": "page",
|
|
"reason_contains": "一意"
|
|
},
|
|
{
|
|
"page": 0,
|
|
"title": "Second structure",
|
|
"level": 2,
|
|
"precision": "page",
|
|
"reason_contains": "一意"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "repeated-form.pdf",
|
|
"bytes": 1302,
|
|
"sha256": "d05f07ddedd2a045f3f3f66bc554fad6fb2c651828080472130f139783e9596f",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Repeated heading",
|
|
"level": 2,
|
|
"precision": "page",
|
|
"reason_contains": "複数回"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "unused-form-resource.pdf",
|
|
"bytes": 1776,
|
|
"sha256": "c203b8c8bf3afadd76e51692390c81d866fba0ce56b438a7b6613bd75f2bcbad",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "Used heading",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
50,
|
|
127,
|
|
140,
|
|
142
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "inline-image-before-form.pdf",
|
|
"bytes": 1303,
|
|
"sha256": "3fc737049b0a92d72b813ae5d6455c4bb51da08f561371374b3acc99f7356ae5",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "After image",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
50,
|
|
127,
|
|
125,
|
|
142
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "cyclic-form.pdf",
|
|
"bytes": 1185,
|
|
"sha256": "3143516932a8c9b4355325d251e0cc5d1af77edd368ad915c0bf6990643cf74a",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "cyclic-rolemap.pdf",
|
|
"bytes": 1284,
|
|
"sha256": "aa0772a34f4abd035e2e7d4aa6438a49774b791b9520d3269cffa52b1575a2fc",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "cyclic-parent.pdf",
|
|
"bytes": 1245,
|
|
"sha256": "46e4ac7e96e372b05f35718b675552f58ad618887e53ba31a044da748edd1036",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "cyclic-children.pdf",
|
|
"bytes": 1203,
|
|
"sha256": "7c9f49595fa3001b2c35c7eaf389d57dc2d6d7c910ef36d35ef0810c8e0d7935",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "broken-mcr-page.pdf",
|
|
"bytes": 1243,
|
|
"sha256": "aa1722f9ec4e4d5affd531e40a58c76be1ecfb60e4b2b7d20bbab53e459a4abd",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "broken-mcr-stream.pdf",
|
|
"bytes": 1245,
|
|
"sha256": "c2c20b93bf307df69ab5a5b962f2f399d761a987e372707b830be7ae12839596",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "annotation-owned-mcr.pdf",
|
|
"bytes": 1263,
|
|
"sha256": "282612ae3bfecdc233e6818ee4a680f3e4541f060979443952b595c9d76943cc",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "broken-graphics-stack.pdf",
|
|
"bytes": 1249,
|
|
"sha256": "ac27fe4c8e166a4f241737578b9e846df685b83b85cc8d9447f7c33203d66c15",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "cyclic-number-tree.pdf",
|
|
"bytes": 1240,
|
|
"sha256": "e1adb2ebb053be176f746b89b8e24946b1c9a86cbe05421f7691e49787cbc541",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "conflicting-parent-tree-owner.pdf",
|
|
"bytes": 1802,
|
|
"sha256": "6def473a2db3cef07e481de5ae6a9ae0837d60da1ceb66ffaa47e250de0b6876",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true
|
|
}
|
|
},
|
|
{
|
|
"file": "stream-quota-at-limit.pdf",
|
|
"bytes": 17615,
|
|
"sha256": "40a56f12e42fe67ce3b656027a7fc4348a5cb34d5ce8f0f38350567b2e178924",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [
|
|
{
|
|
"page": 0,
|
|
"title": "At stream limit",
|
|
"level": 2,
|
|
"precision": "exact",
|
|
"text_region_pt": [
|
|
50,
|
|
127,
|
|
140,
|
|
142
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"file": "stream-quota-over-limit.pdf",
|
|
"bytes": 17617,
|
|
"sha256": "80cf057acd5c6c2454fb6cba20100559bb892e0828a23d3ce50405b5477fb735",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"limited": true,
|
|
"truncated": true
|
|
}
|
|
},
|
|
{
|
|
"file": "bounded-heading-response.pdf",
|
|
"bytes": 1157442,
|
|
"sha256": "820ea69c56ac33587114886aded122e9d7705e0ffdccaa6eefbb81ab4a05f6ce",
|
|
"expected": {
|
|
"pages": 1,
|
|
"headings": [],
|
|
"response_limited": true
|
|
}
|
|
}
|
|
],
|
|
"context_documents": [
|
|
{
|
|
"file": "context-deep-tree.pdf",
|
|
"bytes": 6656,
|
|
"sha256": "66dc1bc3c5fd062334fddc9e2f0ef420b168e0ed44397bb2374c6b35695d86de",
|
|
"expected": {
|
|
"scope": "Context-only regression: after a depth failure, the second page must never be assigned index zero."
|
|
}
|
|
},
|
|
{
|
|
"file": "context-warnings-32.pdf",
|
|
"bytes": 2703,
|
|
"sha256": "1ed5ad72f3054844c158ffff87977616caaca63cbb864a50b1c9be96ac1a5ec6",
|
|
"expected": {
|
|
"scope": "Context-only cumulative diagnostic limit, starting in initial parse; warning bodies must never reach stdout/stderr.",
|
|
"accepted": true
|
|
}
|
|
},
|
|
{
|
|
"file": "context-warnings-33.pdf",
|
|
"bytes": 2778,
|
|
"sha256": "29e105aa8c78d8b6a0ab1a5d7c7f99663abd952f1657c0c17c43ab24406822a1",
|
|
"expected": {
|
|
"scope": "Context-only cumulative diagnostic limit, starting in initial parse; warning bodies must never reach stdout/stderr.",
|
|
"accepted": false
|
|
}
|
|
},
|
|
{
|
|
"file": "context-warning-bytes.pdf",
|
|
"bytes": 131435,
|
|
"sha256": "42c792b2fa035674a22bde94fe681bc89406e3f015be7e32f49d3a3410364319",
|
|
"expected": {
|
|
"scope": "Context-only diagnostic byte limit during initial parse; no warning text is retained or emitted.",
|
|
"accepted": false
|
|
}
|
|
}
|
|
]
|
|
}
|