initial commit

This commit is contained in:
2026-09-21 13:41:40 +09:00
commit 855c7328df
411 changed files with 85352 additions and 0 deletions
+537
View File
@@ -0,0 +1,537 @@
{
"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
}
}
]
}