{
  "schema": "dokivo.public-grayscale-provider-comparison.v1",
  "date": "2026-10-23",
  "author": "DOKIVO; this is our own product comparison, not an independent third-party review",
  "measuredDokivoSourceCommit": "3224afaa2cefd8dec03a3596e106fa9dd8013dbe",
  "method": "Six actual competitor UI downloads from two byte-identical synthetic inputs. All pages; no output selected by favorable metrics. Existing server measurements are published without rerunning PDF processing.",
  "runtime": {
    "ghostscript": "10.05.1",
    "pdfium": "152.0.7947.0",
    "pypdfium2": "5.12.1",
    "pdfJs": "5.5.207",
    "Pillow": "12.3.0"
  },
  "inputs": [
    {
      "id": "colour",
      "file": "source.pdf",
      "bytes": 144375,
      "pages": 2,
      "sha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f",
      "content": "Colour diagram, 6 pt text, existing invisible text, photograph; source already has a missing visual pi glyph"
    },
    {
      "id": "form",
      "file": "form-source.pdf",
      "bytes": 478276,
      "pages": 1,
      "sha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621",
      "content": "Page content already gray; coloured AcroForm widget and text annotation appearances"
    }
  ],
  "settings": {
    "sejda": "Text and images grayscale; image compression disabled; all pages",
    "avepdf": "All five content categories enabled; all pages",
    "pdf24": "Default grayscale; all pages",
    "dokivo-before": "Raster grayscale, 144 DPI; all pages; existing source text copied to invisible layer",
    "dokivo": "grayscale-vector; all pages; no OCR; source graph with content/resources replacement; already-gray form returned byte-exact"
  },
  "metricDefinitions": {
    "textMatch": "Per-page Unicode equality against the input after whitespace normalization and separately without whitespace; PDFium and PDF.js are separate readers. Mismatch does not mean no selectable/searchable text in every reader.",
    "visibleText": "Count of painted visible text objects, not lines or characters",
    "paths": "Count and bounds of vector paths; bounds equality is not proof of equivalent path segments",
    "color": "Pixels with RGB max-min > 2 in a 72 DPI rendering; content and annotation appearances are not equivalent scopes",
    "crop": "One fixed 6 pt text crop on page 1, 576 DPI; grayscale luminance pixel comparison. The .images.file names are original worker artifact names, not public URLs.",
    "forms": "Measured field values/types, annotation structure, page geometry and 72 DPI appearance; editing and resaving at competitors was not tested"
  },
  "publicCrops": {
    "source": "source-text-576dpi.png",
    "dokivoVector": "vector-text-576dpi.png",
    "dokivoRaster": "raster-text-576dpi.png",
    "note": "Measured Sejda, AvePDF and PDF24 output crops have exactly the same PNG SHA256 as source-text-576dpi.png; see each row."
  },
  "rows": [
    {
      "fixture": "colour",
      "provider": "sejda",
      "resultFile": "sejda-colour.pdf",
      "sourceSha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f",
      "source": {
        "bytes": 144375,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 110096,
              "height": 842,
              "max_chroma": 178,
              "mean_chroma": 9.934498,
              "pixels": 501832,
              "rgb_sha256": "847a5489b05364ef7c323a26bd9ba145d18f6aa3d56fcb5e52d0a499db721ac0",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 241781,
              "height": 842,
              "max_chroma": 83,
              "mean_chroma": 10.52396,
              "pixels": 501832,
              "rgb_sha256": "324e691b555ecb7b5f37f623afdc24e576fb8c4a92ec9f6a5c8c3b9d8e1034ad",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f"
      },
      "output": {
        "bytes": 124694,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "878a5b0c60970544dd422a0373cbd09a10959762c14c09b8d68effa35f80547c",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "046b4d9068044008224e99d17261efca394e8e72bb5e78c852b4cae8f8dd40ce",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "dfc356da520f0e0c3d05a2e03729464cf43e560b1004de7be74d3e408dbc6615"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": false,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          },
          {
            "no_new_full_page_images": true,
            "page": 2,
            "same_72dpi_rgb": false,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "3.0.38 (5.1.26) "
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 39,
              "same": true,
              "sourceCodePointCount": 39
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 87,
              "same": true,
              "sourceCodePointCount": 87
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 37,
              "same": true,
              "sourceCodePointCount": 37
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": {
        "images": [
          {
            "bytes": 24103,
            "file": "source-text-576dpi.png",
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "source",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          },
          {
            "bytes": 24103,
            "file": "output-text-576dpi.png",
            "gray_pixel_mean_abs_difference": 0,
            "gray_pixels_difference_gt16": 0,
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "output",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          }
        ],
        "meaning": "visual evidence only; grayscale conversion can legitimately change luminance",
        "spec": {
          "anchor_text": "Тонкий текст 6 pt: подпись, формула A = πr², OCR-слой сохранён.",
          "bounds": [
            46.119999,
            201.746002,
            241.880035,
            211.811996
          ],
          "crop": [
            46.119999,
            201.746002,
            353.399994,
            630.078019
          ],
          "dpi": 576,
          "page": 1
        },
        "status": "rendered"
      }
    },
    {
      "fixture": "colour",
      "provider": "avepdf",
      "resultFile": "avepdf-colour.pdf",
      "sourceSha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f",
      "source": {
        "bytes": 144375,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 110096,
              "height": 842,
              "max_chroma": 178,
              "mean_chroma": 9.934498,
              "pixels": 501832,
              "rgb_sha256": "847a5489b05364ef7c323a26bd9ba145d18f6aa3d56fcb5e52d0a499db721ac0",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 241781,
              "height": 842,
              "max_chroma": 83,
              "mean_chroma": 10.52396,
              "pixels": 501832,
              "rgb_sha256": "324e691b555ecb7b5f37f623afdc24e576fb8c4a92ec9f6a5c8c3b9d8e1034ad",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f"
      },
      "output": {
        "bytes": 166345,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "e3f16b73566f0892f6d08c1a938bd5f8be09e3a2d82e172acd760a3da0c02019",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "905350696881940f9b65261170b3098cb8628bbc99902c22d2904dd01fbdce4b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "4e2b37351ddd789ba03e4b1a796e687ff0c1dc96160eb3e0eae5ec5492856cf5"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": false,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          },
          {
            "no_new_full_page_images": true,
            "page": 2,
            "same_72dpi_rgb": false,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 39,
              "same": true,
              "sourceCodePointCount": 39
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 87,
              "same": true,
              "sourceCodePointCount": 87
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 37,
              "same": true,
              "sourceCodePointCount": 37
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": {
        "images": [
          {
            "bytes": 24103,
            "file": "source-text-576dpi.png",
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "source",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          },
          {
            "bytes": 24103,
            "file": "output-text-576dpi.png",
            "gray_pixel_mean_abs_difference": 0,
            "gray_pixels_difference_gt16": 0,
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "output",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          }
        ],
        "meaning": "visual evidence only; grayscale conversion can legitimately change luminance",
        "spec": {
          "anchor_text": "Тонкий текст 6 pt: подпись, формула A = πr², OCR-слой сохранён.",
          "bounds": [
            46.119999,
            201.746002,
            241.880035,
            211.811996
          ],
          "crop": [
            46.119999,
            201.746002,
            353.399994,
            630.078019
          ],
          "dpi": 576,
          "page": 1
        },
        "status": "rendered"
      }
    },
    {
      "fixture": "colour",
      "provider": "pdf24",
      "resultFile": "pdf24-colour.pdf",
      "sourceSha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f",
      "source": {
        "bytes": 144375,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 110096,
              "height": 842,
              "max_chroma": 178,
              "mean_chroma": 9.934498,
              "pixels": 501832,
              "rgb_sha256": "847a5489b05364ef7c323a26bd9ba145d18f6aa3d56fcb5e52d0a499db721ac0",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 241781,
              "height": 842,
              "max_chroma": 83,
              "mean_chroma": 10.52396,
              "pixels": 501832,
              "rgb_sha256": "324e691b555ecb7b5f37f623afdc24e576fb8c4a92ec9f6a5c8c3b9d8e1034ad",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f"
      },
      "output": {
        "bytes": 27460,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "AARZHC+GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 6532,
                "program_sha256": "dc3742a3d9b15434cb535ebcad533545c447f688cbd1be9a7fa4700c02680c1f"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 38,
                "fonts": [
                  {
                    "characters": 38,
                    "name": "AARZHC+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 6532,
                    "program_sha256": "dc3742a3d9b15434cb535ebcad533545c447f688cbd1be9a7fa4700c02680c1f"
                  }
                ],
                "objects": 1,
                "sha256": "29224661dab142252253c3941a2c123ff27010626cc5de7f38f149e9e5c50714"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 86,
                "fonts": [
                  {
                    "characters": 86,
                    "name": "AARZHC+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 6532,
                    "program_sha256": "dc3742a3d9b15434cb535ebcad533545c447f688cbd1be9a7fa4700c02680c1f"
                  }
                ],
                "objects": 5,
                "sha256": "3dd8a077149452670099a998f2a6805cff2e6338977c0bfab01def8105f19bd7"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "33695b979fe3698631aa4e04945254498f243c64caf62725e2740f67ce4f1873",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "122b2a93849d5ecbcfefd069e85bb67008d50ac1e70f7b8a4e97ab4064f18195",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "AARZHC+GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 6532,
                "program_sha256": "dc3742a3d9b15434cb535ebcad533545c447f688cbd1be9a7fa4700c02680c1f"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 36,
                "fonts": [
                  {
                    "characters": 36,
                    "name": "AARZHC+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 6532,
                    "program_sha256": "dc3742a3d9b15434cb535ebcad533545c447f688cbd1be9a7fa4700c02680c1f"
                  }
                ],
                "objects": 1,
                "sha256": "e9a09d4a967189344fdcc62c70cbf54e8780357c0f7d66b04b868983fccc8dfd"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "AARZHC+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 6532,
                    "program_sha256": "dc3742a3d9b15434cb535ebcad533545c447f688cbd1be9a7fa4700c02680c1f"
                  }
                ],
                "objects": 1,
                "sha256": "28daffffe86653d346ede7f8b4d309277eb2f6904b64aec545b6c828be944c0e"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "3f52bce10d9a737103b778970dc22cf69a9324fc305e7391b1afde3b218b1984",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "0ec4957cca04f0b141468f12321a5b94896005abb8a137bcf8afdcd9a0c3f1ac",
            "textTruncated": false
          }
        ],
        "sha256": "0a57742bcd3fdaddf5886914ff02047ee82b174b1bf2f13c8a78c231f0aa9f55"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": false,
            "same_invisible_characters": false,
            "same_native_boxes_rotate": true,
            "same_normalized_text": false,
            "same_path_geometry_signature": true,
            "same_pdfium_text": false,
            "same_visible_characters": false
          },
          {
            "no_new_full_page_images": true,
            "page": 2,
            "same_72dpi_rgb": false,
            "same_invisible_characters": false,
            "same_native_boxes_rotate": true,
            "same_normalized_text": false,
            "same_path_geometry_signature": true,
            "same_pdfium_text": false,
            "same_visible_characters": false
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "PDF24 Tools",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  250,
                  240,
                  233,
                  244,
                  239,
                  244,
                  249,
                  1067
                ],
                "outputSnippet": "úðéôïôùЫõOKþøûõǒцĿņŕŐĽŬŅŊĽŀœĽŏŏĽDO0IbO",
                "sourceCodePoints": [
                  1053,
                  1045,
                  1042,
                  1048,
                  1044,
                  1048,
                  1052,
                  1067
                ],
                "sourceSnippet": "НЕВИДИМЫЙOCRСЛОЙ:цветнаядиаграммаDOKIVO"
              },
              "outputCodePointCount": 38,
              "same": false,
              "sourceCodePointCount": 39
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": {
                "index": 1,
                "outputCodePoints": [
                  319,
                  326,
                  341,
                  44,
                  32,
                  341,
                  337,
                  336
                ],
                "outputSnippet": "ЦĿņŕ, ŕőŐŌŊŋ ŕņŌŔŕ Ŋ Ŕņœыŋ ŘőŐ ĖŐĿ ĂņĿ ùĽœ ÿőŐŌŊŋ",
                "sourceCodePoints": [
                  1074,
                  1077,
                  1090,
                  44,
                  32,
                  1090,
                  1086,
                  1085
                ],
                "sourceSnippet": "Цвет, тонкий текст и серый фон Янв Фев Мар Тонкий"
              },
              "outputCodePointCount": 151,
              "same": false,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": {
                "index": 1,
                "outputCodePoints": [
                  319,
                  326,
                  341,
                  44,
                  341,
                  337,
                  336,
                  332
                ],
                "outputSnippet": "ЦĿņŕ,ŕőŐŌŊŋŕņŌŔŕŊŔņœыŋŘőŐĖŐĿĂņĿùĽœÿőŐŌŊŋŕņŌŔŕƚptǒ",
                "sourceCodePoints": [
                  1074,
                  1077,
                  1090,
                  44,
                  1090,
                  1086,
                  1085,
                  1082
                ],
                "sourceSnippet": "Цвет,тонкийтекстисерыйфонЯнвФевМарТонкийтекст6pt:"
              },
              "outputCodePointCount": 86,
              "same": false,
              "sourceCodePointCount": 87
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": {
                "index": 1,
                "outputCodePoints": [
                  319,
                  326,
                  341,
                  44,
                  341,
                  337,
                  336,
                  332
                ],
                "outputSnippet": "ЦĿņŕ,ŕőŐŌŊŋŕņŌŔŕŊŔņœыŋŘőŐĖŐĿĂņĿùĽœÿőŐŌŊŋŕņŌŔŕƚptǒ",
                "sourceCodePoints": [
                  1074,
                  1077,
                  1090,
                  44,
                  1090,
                  1086,
                  1085,
                  1082
                ],
                "sourceSnippet": "Цвет,тонкийтекстисерыйфонЯнвФевМарТонкийтекст6pt:"
              },
              "outputCodePointCount": 124,
              "same": false,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  250,
                  240,
                  233,
                  244,
                  239,
                  244,
                  249,
                  1067
                ],
                "outputSnippet": "úðéôïôùЫõOKþøûõǒŔŊŐŕņŕŊчņŔŌŊŋŒőœŕœņŕ",
                "sourceCodePoints": [
                  1053,
                  1045,
                  1042,
                  1048,
                  1044,
                  1048,
                  1052,
                  1067
                ],
                "sourceSnippet": "НЕВИДИМЫЙOCRСЛОЙ:синтетическийпортрет"
              },
              "outputCodePointCount": 36,
              "same": false,
              "sourceCodePointCount": 37
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  258,
                  337,
                  341,
                  337,
                  320,
                  339,
                  317,
                  344
                ],
                "outputSnippet": "ĂőŕőŀœĽŘŊŬ Ŋ ŒőŅŒŊŔь úðéôïôùЫõ O K þøûõǒ ŔŊŐŕņŕŊ",
                "sourceCodePoints": [
                  1060,
                  1086,
                  1090,
                  1086,
                  1075,
                  1088,
                  1072,
                  1092
                ],
                "sourceSnippet": "Фотография и подпись НЕВИДИМЫЙ OCR СЛОЙ: синтети"
              },
              "outputCodePointCount": 62,
              "same": false,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  258,
                  337,
                  341,
                  337,
                  320,
                  339,
                  317,
                  344
                ],
                "outputSnippet": "ĂőŕőŀœĽŘŊŬŊŒőŅŒŊŔь",
                "sourceCodePoints": [
                  1060,
                  1086,
                  1090,
                  1086,
                  1075,
                  1088,
                  1072,
                  1092
                ],
                "sourceSnippet": "Фотографияиподпись"
              },
              "outputCodePointCount": 18,
              "same": false,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  258,
                  337,
                  341,
                  337,
                  320,
                  339,
                  317,
                  344
                ],
                "outputSnippet": "ĂőŕőŀœĽŘŊŬŊŒőŅŒŊŔьúðéôïôùЫõOKþøûõǒŔŊŐŕņŕŊчņŔŌŊŋŒ",
                "sourceCodePoints": [
                  1060,
                  1086,
                  1090,
                  1086,
                  1075,
                  1088,
                  1072,
                  1092
                ],
                "sourceSnippet": "ФотографияиподписьНЕВИДИМЫЙOCRСЛОЙ:синтетический"
              },
              "outputCodePointCount": 54,
              "same": false,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": {
        "images": [
          {
            "bytes": 24103,
            "file": "source-text-576dpi.png",
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "source",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          },
          {
            "bytes": 24103,
            "file": "output-text-576dpi.png",
            "gray_pixel_mean_abs_difference": 0,
            "gray_pixels_difference_gt16": 0,
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "output",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          }
        ],
        "meaning": "visual evidence only; grayscale conversion can legitimately change luminance",
        "spec": {
          "anchor_text": "Тонкий текст 6 pt: подпись, формула A = πr², OCR-слой сохранён.",
          "bounds": [
            46.119999,
            201.746002,
            241.880035,
            211.811996
          ],
          "crop": [
            46.119999,
            201.746002,
            353.399994,
            630.078019
          ],
          "dpi": 576,
          "page": 1
        },
        "status": "rendered"
      }
    },
    {
      "fixture": "colour",
      "provider": "dokivo-before",
      "resultFile": "raster-all-pages.pdf",
      "sourceSha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f",
      "source": {
        "bytes": 144375,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 110096,
              "height": 842,
              "max_chroma": 178,
              "mean_chroma": 9.934498,
              "pixels": 501832,
              "rgb_sha256": "847a5489b05364ef7c323a26bd9ba145d18f6aa3d56fcb5e52d0a499db721ac0",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 241781,
              "height": 842,
              "max_chroma": 83,
              "mean_chroma": 10.52396,
              "pixels": 501832,
              "rgb_sha256": "324e691b555ecb7b5f37f623afdc24e576fb8c4a92ec9f6a5c8c3b9d8e1034ad",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f"
      },
      "output": {
        "bytes": 153315,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 6,
              "path": 0,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 0
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-7720",
                "normalized_name": "GolosText-Regular-7720",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  0,
                  0,
                  595.280029,
                  841.890015
                ],
                "height": 1684,
                "level": 0,
                "width": 1191
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 1,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "image_height": 1684,
                  "image_width": 1191,
                  "level": 0,
                  "matrix": [
                    595.280029,
                    0,
                    0,
                    841.890015,
                    0,
                    0
                  ],
                  "page_bbox_coverage": 1,
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  381.945007,
                  788.247986
                ],
                "characters": 126,
                "fonts": [
                  {
                    "characters": 126,
                    "name": "GolosText-Regular-7720",
                    "normalized_name": "GolosText-Regular-7720",
                    "objects": 6,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 6,
                "sha256": "e95d5a1eb1efc92ab04e787c911dacff16665f6f93a1c9d8075388426e4c1712"
              },
              "visible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "49220146eb8f7ef6afe87e8c8d72f4616eb5deb19a5690264ba9e11b039b0f99",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 2,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 0
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-7720",
                "normalized_name": "GolosText-Regular-7720",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  0,
                  0,
                  595.280029,
                  841.890015
                ],
                "height": 1684,
                "level": 0,
                "width": 1191
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 1,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "image_height": 1684,
                  "image_width": 1191,
                  "level": 0,
                  "matrix": [
                    595.280029,
                    0,
                    0,
                    841.890015,
                    0,
                    0
                  ],
                  "page_bbox_coverage": 1,
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  382.860016,
                  713.338013
                ],
                "characters": 55,
                "fonts": [
                  {
                    "characters": 55,
                    "name": "GolosText-Regular-7720",
                    "normalized_name": "GolosText-Regular-7720",
                    "objects": 2,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 2,
                "sha256": "91d3d6ea62d654ab1b23c134c87c39d3a341a9bb8a57b79cdd5651309e52baca"
              },
              "visible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "62a706681d0ae2b060c13e16922df0ea508ed13e70fe1987b5d5d7d52600267d",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "cfe88c9cde02255f568aaf1447ca4f4bb5c8edcd01558a90b2ebbfc3adcd55ef"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": false,
            "page": 1,
            "same_72dpi_rgb": false,
            "same_invisible_characters": false,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": false,
            "same_pdfium_text": true,
            "same_visible_characters": false
          },
          {
            "no_new_full_page_images": false,
            "page": 2,
            "same_72dpi_rgb": false,
            "same_invisible_characters": false,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": false
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  1062,
                  1074,
                  1077,
                  1090,
                  44,
                  1090,
                  1086,
                  1085
                ],
                "outputSnippet": "Цвет,тонкийтекстисерыйфонЯнвФевМарТонкийтекст6pt",
                "sourceCodePoints": [
                  1053,
                  1045,
                  1042,
                  1048,
                  1044,
                  1048,
                  1052,
                  1067
                ],
                "sourceSnippet": "НЕВИДИМЫЙOCRСЛОЙ:цветнаядиаграммаDOKIVO"
              },
              "outputCodePointCount": 126,
              "same": false,
              "sourceCodePointCount": 39
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [],
                "outputSnippet": "",
                "sourceCodePoints": [
                  1062,
                  1074,
                  1077,
                  1090,
                  44,
                  1090,
                  1086,
                  1085
                ],
                "sourceSnippet": "Цвет,тонкийтекстисерыйфонЯнвФевМарТонкийтекст6pt"
              },
              "outputCodePointCount": 0,
              "same": false,
              "sourceCodePointCount": 87
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  1060,
                  1086,
                  1090,
                  1086,
                  1075,
                  1088,
                  1072,
                  1092
                ],
                "outputSnippet": "ФотографияиподписьНЕВИДИМЫЙOCRСЛОЙ:синтетический",
                "sourceCodePoints": [
                  1053,
                  1045,
                  1042,
                  1048,
                  1044,
                  1048,
                  1052,
                  1067
                ],
                "sourceSnippet": "НЕВИДИМЫЙOCRСЛОЙ:синтетическийпортрет"
              },
              "outputCodePointCount": 55,
              "same": false,
              "sourceCodePointCount": 37
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [],
                "outputSnippet": "",
                "sourceCodePoints": [
                  1060,
                  1086,
                  1090,
                  1086,
                  1075,
                  1088,
                  1072,
                  1092
                ],
                "sourceSnippet": "Фотографияиподпись"
              },
              "outputCodePointCount": 0,
              "same": false,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": {
        "images": [
          {
            "bytes": 24103,
            "file": "source-text-576dpi.png",
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "source",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          },
          {
            "bytes": 6763,
            "file": "output-text-576dpi.png",
            "gray_pixel_mean_abs_difference": 10.255727,
            "gray_pixels_difference_gt16": 20938,
            "gray_sha256": "bab9816441199e037e071d2c2c353641cbc9f980bf69c5e3ff7bd8e44115239d",
            "height": 81,
            "label": "output",
            "sha256": "a8aad79e5395d653679b9d47c037734f93e6a43f94a6f8d02487470692fd7b38",
            "width": 1566
          }
        ],
        "meaning": "visual evidence only; grayscale conversion can legitimately change luminance",
        "spec": {
          "anchor_text": "Тонкий текст 6 pt: подпись, формула A = πr², OCR-слой сохранён.",
          "bounds": [
            46.119999,
            201.746002,
            241.880035,
            211.811996
          ],
          "crop": [
            46.119999,
            201.746002,
            353.399994,
            630.078019
          ],
          "dpi": 576,
          "page": 1
        },
        "status": "rendered"
      }
    },
    {
      "fixture": "colour",
      "provider": "dokivo",
      "resultFile": "vector-result.pdf",
      "sourceSha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f",
      "source": {
        "bytes": 144375,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.280029,
                841.890015
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    28,
                    28
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    90,
                    270
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    220,
                    270
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    1,
                    0,
                    0,
                    1,
                    350,
                    270
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "0c0bc3974c831cf64c767a7e4b8ee695533a7750aa0ec87e355341cb7c7d1e1a"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 110096,
              "height": 842,
              "max_chroma": 178,
              "mean_chroma": 9.934498,
              "pixels": 501832,
              "rgb_sha256": "847a5489b05364ef7c323a26bd9ba145d18f6aa3d56fcb5e52d0a499db721ac0",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 241781,
              "height": 842,
              "max_chroma": 83,
              "mean_chroma": 10.52396,
              "pixels": 501832,
              "rgb_sha256": "324e691b555ecb7b5f37f623afdc24e576fb8c4a92ec9f6a5c8c3b9d8e1034ad",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "1d306f2a14eefd0623bbafb8a95efbeee92b87d5ca797a760a13a1e84c47221f"
      },
      "output": {
        "bytes": 33449,
        "pageCount": 2,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 1,
              "path": 5,
              "shading": 0,
              "text": 6,
              "unknown": 0,
              "visible_text": 5
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DDPVBM+GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 15712,
                "program_sha256": "80a46c41eb831d50e294d7073e503ad47b86647af01a2b60f065f098022301e4"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  137.819977,
                  9.57
                ],
                "characters": 39,
                "fonts": [
                  {
                    "characters": 39,
                    "name": "DDPVBM+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 15712,
                    "program_sha256": "80a46c41eb831d50e294d7073e503ad47b86647af01a2b60f065f098022301e4"
                  }
                ],
                "objects": 1,
                "sha256": "6f566fc047cc2c8ddd36f03ebd4db6008f6c64d8a73cfbef3c9dbaf7213d931b"
              },
              "visible": {
                "bounds_union": [
                  48.119999,
                  203.746002,
                  381.945007,
                  788.247986
                ],
                "characters": 87,
                "fonts": [
                  {
                    "characters": 87,
                    "name": "DDPVBM+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 5,
                    "program_bytes": 15712,
                    "program_sha256": "80a46c41eb831d50e294d7073e503ad47b86647af01a2b60f065f098022301e4"
                  }
                ],
                "objects": 5,
                "sha256": "cef3e994da35ea53d033c0dd8da260a2a9273acf4a4a49f9ff2a649ec2c5cf3a"
              }
            },
            "pathGeometry": {
              "bounds_union": [
                0,
                0,
                595.279968,
                841.890076
              ],
              "count": 5,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.279968,
                    841.890076
                  ],
                  "level": 0,
                  "matrix": [
                    0.1,
                    0,
                    0,
                    0.1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    0,
                    0,
                    595.279968,
                    841.890076
                  ]
                },
                {
                  "bounds": [
                    28,
                    28,
                    567,
                    813
                  ],
                  "level": 0,
                  "matrix": [
                    0.1,
                    0,
                    0,
                    0.1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    28,
                    28,
                    567,
                    813
                  ]
                },
                {
                  "bounds": [
                    90,
                    270,
                    162,
                    360
                  ],
                  "level": 0,
                  "matrix": [
                    0.1,
                    0,
                    0,
                    0.1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    90,
                    270,
                    162,
                    360
                  ]
                },
                {
                  "bounds": [
                    220,
                    270,
                    292,
                    415
                  ],
                  "level": 0,
                  "matrix": [
                    0.1,
                    0,
                    0,
                    0.1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    220,
                    270,
                    292,
                    415
                  ]
                },
                {
                  "bounds": [
                    350,
                    270,
                    422,
                    480
                  ],
                  "level": 0,
                  "matrix": [
                    0.1,
                    0,
                    0,
                    0.1,
                    0,
                    0
                  ],
                  "page_bounds": [
                    350,
                    270,
                    422,
                    480
                  ]
                }
              ],
              "records_truncated": false,
              "sha256": "344474e84b6a7f41b8507b2a17cd0e0b49cfd48144ac4002a2d4591374a9397c"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "67716423c126a0ba85ceb38de5b2a7339279547eb8766c1ad45930dfc33daee0",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 151,
            "textSha256": "abff16fa73f9ac40f012e2f5ecc731e16b2a3c4e0e44594f3c6fa1c76afa0c41",
            "textTruncated": false
          },
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 2,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DDPVBM+GolosText-Regular-2708",
                "normalized_name": "GolosText-Regular-2708",
                "program_bytes": 15712,
                "program_sha256": "80a46c41eb831d50e294d7073e503ad47b86647af01a2b60f065f098022301e4"
              }
            ],
            "images": [
              {
                "bounds": [
                  85,
                  80,
                  510,
                  647
                ],
                "height": 1200,
                "level": 0,
                "width": 900
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    85,
                    80,
                    510,
                    647
                  ],
                  "image_height": 1200,
                  "image_width": 900,
                  "level": 0,
                  "matrix": [
                    425,
                    0,
                    0,
                    567,
                    85,
                    80
                  ],
                  "page_bbox_coverage": 0.480834,
                  "page_bounds": [
                    85,
                    80,
                    510,
                    647
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  5.5,
                  4.005,
                  127.375008,
                  9.57
                ],
                "characters": 37,
                "fonts": [
                  {
                    "characters": 37,
                    "name": "DDPVBM+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 15712,
                    "program_sha256": "80a46c41eb831d50e294d7073e503ad47b86647af01a2b60f065f098022301e4"
                  }
                ],
                "objects": 1,
                "sha256": "4880546ecbd4fbaabe39486c8ded9aa9b7268e4b967975c723aac29d07ab1868"
              },
              "visible": {
                "bounds_union": [
                  180.990005,
                  696.41803,
                  382.860016,
                  713.338013
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DDPVBM+GolosText-Regular-2708",
                    "normalized_name": "GolosText-Regular-2708",
                    "objects": 1,
                    "program_bytes": 15712,
                    "program_sha256": "80a46c41eb831d50e294d7073e503ad47b86647af01a2b60f065f098022301e4"
                  }
                ],
                "objects": 1,
                "sha256": "1837d0ce124c53f0b629d112931e01c37fe91e21aa196ad30c16bac428a1b740"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "2560d580c9e7bb542759376bfcb473c283a76877cc9ab083ec075b516d98148c",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 62,
            "textSha256": "9fae32bc3e0d1322220942dcad286a7f70efd515a156321dd09ba9693d9685bd",
            "textTruncated": false
          }
        ],
        "sha256": "5bea8b4e72d9f15a7b073d7b70768264fdec819b37a2289934e71a10fb244317"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": false,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": false,
            "same_pdfium_text": true,
            "same_visible_characters": true
          },
          {
            "no_new_full_page_images": true,
            "page": 2,
            "same_72dpi_rgb": false,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 2,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            },
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 39,
              "same": true,
              "sourceCodePointCount": 39
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 87,
              "same": true,
              "sourceCodePointCount": 87
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 37,
              "same": true,
              "sourceCodePointCount": 37
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 151,
              "same": true,
              "sourceCodePointCount": 151
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 126,
              "same": true,
              "sourceCodePointCount": 126
            }
          },
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 62,
              "same": true,
              "sourceCodePointCount": 62
            },
            "outputTruncated": false,
            "page": 2,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 55,
              "same": true,
              "sourceCodePointCount": 55
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": {
        "images": [
          {
            "bytes": 24103,
            "file": "source-text-576dpi.png",
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "source",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          },
          {
            "bytes": 24103,
            "file": "output-text-576dpi.png",
            "gray_pixel_mean_abs_difference": 0,
            "gray_pixels_difference_gt16": 0,
            "gray_sha256": "afa8f16a0a81b5d18716a2ab0d16ed7cab0471581248093ac782ffa4d62131f3",
            "height": 81,
            "label": "output",
            "sha256": "a18b11e51967104c71bb77ebe026aa32702f27bc5172fc879eb786f7a819bb73",
            "width": 1566
          }
        ],
        "meaning": "visual evidence only; grayscale conversion can legitimately change luminance",
        "spec": {
          "anchor_text": "Тонкий текст 6 pt: подпись, формула A = πr², OCR-слой сохранён.",
          "bounds": [
            46.119999,
            201.746002,
            241.880035,
            211.811996
          ],
          "crop": [
            46.119999,
            201.746002,
            353.399994,
            630.078019
          ],
          "dpi": 576,
          "page": 1
        },
        "status": "rendered"
      }
    },
    {
      "fixture": "form",
      "provider": "sejda",
      "resultFile": "sejda-form.pdf",
      "sourceSha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621",
      "source": {
        "bytes": 478276,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621"
      },
      "output": {
        "bytes": 418207,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "934814618c86eb0283b6461888262cad85cd90114b43f790e07cdf805d5d67e6"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": true,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "3.0.38 (5.1.26) "
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 0,
              "same": true,
              "sourceCodePointCount": 0
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": null
    },
    {
      "fixture": "form",
      "provider": "avepdf",
      "resultFile": "avepdf-form.pdf",
      "sourceSha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621",
      "source": {
        "bytes": 478276,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621"
      },
      "output": {
        "bytes": 480235,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "bf4a928c0f83c6833cb0425bf777f1c3e81e3746e13f3c4531f7661c19a084c3"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": true,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 0,
              "same": true,
              "sourceCodePointCount": 0
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": null
    },
    {
      "fixture": "form",
      "provider": "pdf24",
      "resultFile": "pdf24-form.pdf",
      "sourceSha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621",
      "source": {
        "bytes": 478276,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621"
      },
      "output": {
        "bytes": 418294,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "843f1d75e6cc57781140c083b011f23c2c2f566b706d8514e4694f413f66af71"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": true,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "PDF24 Tools",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 0,
              "same": true,
              "sourceCodePointCount": 0
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": null
    },
    {
      "fixture": "form",
      "provider": "dokivo-before",
      "resultFile": "raster-form.pdf",
      "sourceSha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621",
      "source": {
        "bytes": 478276,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621"
      },
      "output": {
        "bytes": 109344,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 1,
              "invisible_text": 1,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 0
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "GolosText-Regular-9750",
                "normalized_name": "GolosText-Regular-9750",
                "program_bytes": 184292,
                "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
              }
            ],
            "images": [
              {
                "bounds": [
                  0,
                  0,
                  595.280029,
                  841.890015
                ],
                "height": 1684,
                "level": 0,
                "width": 1191
              }
            ],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 1,
              "full_page_count": 1,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [
                {
                  "bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ],
                  "image_height": 1684,
                  "image_width": 1191,
                  "level": 0,
                  "matrix": [
                    595.280029,
                    0,
                    0,
                    841.890015,
                    0,
                    0
                  ],
                  "page_bbox_coverage": 1,
                  "page_bounds": [
                    0,
                    0,
                    595.280029,
                    841.890015
                  ]
                }
              ],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": [
                  55.209999,
                  767.007996,
                  311.15802,
                  785.862
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "GolosText-Regular-9750",
                    "normalized_name": "GolosText-Regular-9750",
                    "objects": 1,
                    "program_bytes": 184292,
                    "program_sha256": "17bb58fb69aec2dfb047a2ebf52534023e9b688c97a6b7ac795b0a72912c2063"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              },
              "visible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 0,
              "height": 842,
              "max_chroma": 0,
              "mean_chroma": 0,
              "pixels": 501832,
              "rgb_sha256": "62af0fcbaedc2fff3a6bdb9c74a3a5c2434df6d92818da48c46fc6d4bc372af8",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "1261583e6fac20f058cc9eecd388dfb25d24461b35792a914ea71777a14021ea"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": false,
            "page": 1,
            "same_72dpi_rgb": false,
            "same_invisible_characters": false,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": false
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": false,
        "sameFields": false,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [
                  83,
                  89,
                  78,
                  84,
                  72,
                  69,
                  84,
                  73
                ],
                "outputSnippet": "SYNTHETIC_ACROFORM",
                "sourceCodePoints": [],
                "sourceSnippet": ""
              },
              "outputCodePointCount": 18,
              "same": false,
              "sourceCodePointCount": 0
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": {
                "index": 0,
                "outputCodePoints": [],
                "outputSnippet": "",
                "sourceCodePoints": [
                  83,
                  89,
                  78,
                  84,
                  72,
                  69,
                  84,
                  73
                ],
                "sourceSnippet": "SYNTHETIC_ACROFORM"
              },
              "outputCodePointCount": 0,
              "same": false,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": null
    },
    {
      "fixture": "form",
      "provider": "dokivo",
      "resultFile": "form-source.pdf",
      "sourceSha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621",
      "source": {
        "bytes": 478276,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621"
      },
      "output": {
        "bytes": 478276,
        "pageCount": 1,
        "pages": [
          {
            "counts": {
              "form": 0,
              "image": 0,
              "invisible_text": 0,
              "path": 0,
              "shading": 0,
              "text": 1,
              "unknown": 0,
              "visible_text": 1
            },
            "cropBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "fonts": [
              {
                "name": "DejaVuSans-9742",
                "normalized_name": "DejaVuSans-9742",
                "program_bytes": 757076,
                "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
              }
            ],
            "images": [],
            "mediaBox": [
              0,
              0,
              595.280029,
              841.890015
            ],
            "objectsTruncated": false,
            "paintedImages": {
              "count": 0,
              "full_page_count": 0,
              "full_page_definition": "painted image bounding box covers >=95% of page bbox; not clipping/occlusion aware",
              "records": [],
              "records_truncated": false
            },
            "paintedText": {
              "invisible": {
                "bounds_union": null,
                "characters": 0,
                "fonts": [],
                "objects": 0,
                "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
              },
              "visible": {
                "bounds_union": [
                  55.452,
                  764.830017,
                  312.940002,
                  786.565979
                ],
                "characters": 18,
                "fonts": [
                  {
                    "characters": 18,
                    "name": "DejaVuSans-9742",
                    "normalized_name": "DejaVuSans-9742",
                    "objects": 1,
                    "program_bytes": 757076,
                    "program_sha256": "7da195a74c55bef988d0d48f9508bd5d849425c1770dba5d7bfc6ce9ed848954"
                  }
                ],
                "objects": 1,
                "sha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af"
              }
            },
            "pathGeometry": {
              "bounds_union": null,
              "count": 0,
              "precision": "bounds/matrices rounded to 6 decimals; no path-segment equivalence claim",
              "records": [],
              "records_truncated": false,
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "render72Dpi": {
              "colored_pixels_gt2": 2434,
              "height": 842,
              "max_chroma": 255,
              "mean_chroma": 0.382903,
              "pixels": 501832,
              "rgb_sha256": "277d92a44aed4decf941505d49dae383c0691c085b01ce27e11ec45d01d3557b",
              "width": 596
            },
            "rotate": 0,
            "textCharacters": 18,
            "textSha256": "96d86b4cb9f21c3f73f409b0029706bce6a26721e5c2e1fafb2037ea700587af",
            "textTruncated": false
          }
        ],
        "sha256": "f7427c2e294785a261b5193a34984829563352eab5d01a2a40d96eaa0f58c621"
      },
      "objectAndPageComparison": {
        "pages": [
          {
            "no_new_full_page_images": true,
            "page": 1,
            "same_72dpi_rgb": true,
            "same_invisible_characters": true,
            "same_native_boxes_rotate": true,
            "same_normalized_text": true,
            "same_path_geometry_signature": true,
            "same_pdfium_text": true,
            "same_visible_characters": true
          }
        ],
        "same_page_count": true
      },
      "structure": {
        "output": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        },
        "sameAnnotations": true,
        "sameFields": true,
        "sameGeometry": true,
        "source": {
          "creator": "pdf-lib (https://github.com/Hopding/pdf-lib)",
          "fields": [
            {
              "flags": 0,
              "name": "synthetic_name",
              "type": "PDFTextField",
              "value": "FORM_DEFAULT_SYNTHETIC"
            }
          ],
          "pageCount": 1,
          "pages": [
            {
              "annotations": [
                {
                  "colour": null,
                  "contents": null,
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    63.5,
                    649.5,
                    364.5,
                    684.5
                  ],
                  "subtype": "/Widget",
                  "uri": null
                },
                {
                  "colour": null,
                  "contents": "SYNTHETIC_ANNOTATION",
                  "destination": null,
                  "flags": 4,
                  "rect": [
                    420,
                    690,
                    450,
                    720
                  ],
                  "subtype": "/Text",
                  "uri": null
                }
              ],
              "crop": [
                0,
                0,
                595.28,
                841.89
              ],
              "media": [
                0,
                0,
                595.28,
                841.89
              ],
              "rotate": 0,
              "userUnit": 1
            }
          ],
          "producer": "pdf-lib (https://github.com/Hopding/pdf-lib)"
        }
      },
      "pdfiumTextReadback": {
        "pages": [
          {
            "invisiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 0,
              "same": true,
              "sourceCodePointCount": 0
            },
            "invisiblePaintedComplete": true,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "visiblePaintedComplete": true,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDFium",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "pdfJsTextReadback": {
        "pages": [
          {
            "invisiblePainted": null,
            "invisiblePaintedComplete": false,
            "normalized": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            },
            "outputTruncated": false,
            "page": 1,
            "sourceTruncated": false,
            "visiblePainted": null,
            "visiblePaintedComplete": false,
            "withoutWhitespace": {
              "firstMismatch": null,
              "outputCodePointCount": 18,
              "same": true,
              "sourceCodePointCount": 18
            }
          }
        ],
        "reader": "PDF.js",
        "schema": "dokivo.synthetic-pdf-text-difference.v1",
        "scope": "fixed-synthetic-fixtures-only"
      },
      "crop576Dpi": null
    }
  ],
  "limitations": [
    "Two synthetic inputs are not a corpus-wide compatibility, quality or compression guarantee.",
    "PDF24 colour output: correct PDF.js text on both pages; different PDFium Cyrillic Unicode on both pages, while the visible crop remains exact. Cause not finally established.",
    "Form page content was already gray. New DOKIVO form result is byte-exact input, not evidence of recoloring coloured page content with fields.",
    "All three competitors retain 2434 coloured pixels on this form sample at 72 DPI. This is not an all-gray output claim.",
    "The old page-1-only raster example is excluded from these all-pages rows.",
    "This publication does not establish competitors internal engines or Google ranking causes."
  ]
}
