{ "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 } } ] }