From b69d6a63549b0b25828cf682a57e901f946428ae Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 13 Jul 2026 20:45:18 +0000 Subject: [PATCH 1/4] Add processing pipeline test spec with golden outputs Add documentcloud/documents/processing/tests/spec/: an executable version of the processing pipeline output contract researched in MuckRock/research/processing-pipeline-spec. Each test document under documents/ has an input PDF and an expected/ directory containing every file the current pipeline produces for it (processed PDF, concatenated and per-page text, txt.json, position.json, all five page image sizes, index cache) plus the database-facing metadata captured from the API callbacks (page_count, page_spec, file_hash, status). The harness runs the real serverless functions in-process - pdfium rendering, Tesseract OCR, grafting, and text position extraction are not mocked - against local storage and Redis, with pubsub topics dispatched through a FIFO queue to mirror one-Lambda-per-message production behavior. The corpus covers embedded text, scanned, mixed, force-OCR, mixed page sizes, blank page, and redaction cases. test_spec.py validates a fresh pipeline run against the goldens (OCR cases skip when the LFS Tesseract libraries or pinned traineddata are unavailable); generate.py regenerates the goldens after intentional behavior changes. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Le7iTGKrY5TmE4jL4GhnWU --- .../processing/tests/spec/.gitignore | 1 + .../documents/processing/tests/spec/README.md | 162 ++++++++ .../processing/tests/spec/__init__.py | 0 .../processing/tests/spec/compare.py | 284 ++++++++++++++ .../spec/documents/blank-1page/case.json | 7 + .../blank-1page/expected/blank-1page.index | Bin 0 -> 347 bytes .../blank-1page/expected/blank-1page.pdf | Bin 0 -> 2736 bytes .../blank-1page/expected/blank-1page.txt | 1 + .../blank-1page/expected/blank-1page.txt.json | 1 + .../blank-1page/expected/metadata.json | 33 ++ .../expected/pages/blank-1page-p1-large.gif | Bin 0 -> 2135 bytes .../expected/pages/blank-1page-p1-normal.gif | Bin 0 -> 1467 bytes .../expected/pages/blank-1page-p1-small.gif | Bin 0 -> 373 bytes .../pages/blank-1page-p1-thumbnail.gif | Bin 0 -> 151 bytes .../expected/pages/blank-1page-p1-xlarge.gif | Bin 0 -> 4533 bytes .../pages/blank-1page-p1.position.json | 1 + .../expected/pages/blank-1page-p1.txt | 1 + .../blank-1page/input/blank-1page.pdf | Bin 0 -> 460 bytes .../spec/documents/force-ocr-1page/case.json | 7 + .../expected/force-ocr-1page.index | Bin 0 -> 1002 bytes .../expected/force-ocr-1page.pdf | Bin 0 -> 3929 bytes .../expected/force-ocr-1page.txt | 4 + .../expected/force-ocr-1page.txt.json | 1 + .../force-ocr-1page/expected/metadata.json | 33 ++ .../pages/force-ocr-1page-p1-large.gif | Bin 0 -> 23799 bytes .../pages/force-ocr-1page-p1-normal.gif | Bin 0 -> 15417 bytes .../pages/force-ocr-1page-p1-small.gif | Bin 0 -> 2742 bytes .../pages/force-ocr-1page-p1-thumbnail.gif | Bin 0 -> 765 bytes .../pages/force-ocr-1page-p1-xlarge.gif | Bin 0 -> 45239 bytes .../pages/force-ocr-1page-p1.position.json | 1 + .../expected/pages/force-ocr-1page-p1.txt | 4 + .../force-ocr-1page/input/force-ocr-1page.pdf | Bin 0 -> 1222 bytes .../spec/documents/mixed-2page/case.json | 7 + .../mixed-2page/expected/metadata.json | 33 ++ .../mixed-2page/expected/mixed-2page.index | Bin 0 -> 1076 bytes .../mixed-2page/expected/mixed-2page.pdf | Bin 0 -> 25756 bytes .../mixed-2page/expected/mixed-2page.txt | Bin 0 -> 131 bytes .../mixed-2page/expected/mixed-2page.txt.json | 1 + .../expected/pages/mixed-2page-p1-large.gif | Bin 0 -> 16634 bytes .../expected/pages/mixed-2page-p1-normal.gif | Bin 0 -> 10573 bytes .../expected/pages/mixed-2page-p1-small.gif | Bin 0 -> 2070 bytes .../pages/mixed-2page-p1-thumbnail.gif | Bin 0 -> 480 bytes .../expected/pages/mixed-2page-p1-xlarge.gif | Bin 0 -> 33191 bytes .../pages/mixed-2page-p1.position.json | 1 + .../expected/pages/mixed-2page-p1.txt | Bin 0 -> 92 bytes .../expected/pages/mixed-2page-p2-large.gif | Bin 0 -> 20785 bytes .../expected/pages/mixed-2page-p2-normal.gif | Bin 0 -> 13509 bytes .../expected/pages/mixed-2page-p2-small.gif | Bin 0 -> 2778 bytes .../pages/mixed-2page-p2-thumbnail.gif | Bin 0 -> 799 bytes .../expected/pages/mixed-2page-p2-xlarge.gif | Bin 0 -> 52146 bytes .../pages/mixed-2page-p2.position.json | 1 + .../expected/pages/mixed-2page-p2.txt | 3 + .../mixed-2page/input/mixed-2page.pdf | Bin 0 -> 23266 bytes .../documents/mixed-sizes-2page/case.json | 7 + .../mixed-sizes-2page/expected/metadata.json | 33 ++ .../expected/mixed-sizes-2page.index | Bin 0 -> 1027 bytes .../expected/mixed-sizes-2page.pdf | Bin 0 -> 1519 bytes .../expected/mixed-sizes-2page.txt | Bin 0 -> 78 bytes .../expected/mixed-sizes-2page.txt.json | 1 + .../pages/mixed-sizes-2page-p1-large.gif | Bin 0 -> 8473 bytes .../pages/mixed-sizes-2page-p1-normal.gif | Bin 0 -> 5209 bytes .../pages/mixed-sizes-2page-p1-small.gif | Bin 0 -> 1133 bytes .../pages/mixed-sizes-2page-p1-thumbnail.gif | Bin 0 -> 399 bytes .../pages/mixed-sizes-2page-p1-xlarge.gif | Bin 0 -> 18087 bytes .../pages/mixed-sizes-2page-p1.position.json | 1 + .../expected/pages/mixed-sizes-2page-p1.txt | Bin 0 -> 38 bytes .../pages/mixed-sizes-2page-p2-large.gif | Bin 0 -> 8247 bytes .../pages/mixed-sizes-2page-p2-normal.gif | Bin 0 -> 5203 bytes .../pages/mixed-sizes-2page-p2-small.gif | Bin 0 -> 1078 bytes .../pages/mixed-sizes-2page-p2-thumbnail.gif | Bin 0 -> 376 bytes .../pages/mixed-sizes-2page-p2-xlarge.gif | Bin 0 -> 16781 bytes .../pages/mixed-sizes-2page-p2.position.json | 1 + .../expected/pages/mixed-sizes-2page-p2.txt | Bin 0 -> 38 bytes .../input/mixed-sizes-2page.pdf | Bin 0 -> 1456 bytes .../spec/documents/redact-2page/case.json | 10 + .../redact-2page/expected/metadata.json | 41 ++ .../expected/pages/redact-2page-p1-large.gif | Bin 0 -> 14945 bytes .../expected/pages/redact-2page-p1-normal.gif | Bin 0 -> 9497 bytes .../expected/pages/redact-2page-p1-small.gif | Bin 0 -> 1920 bytes .../pages/redact-2page-p1-thumbnail.gif | Bin 0 -> 460 bytes .../expected/pages/redact-2page-p1-xlarge.gif | Bin 0 -> 30104 bytes .../pages/redact-2page-p1.position.json | 1 + .../expected/pages/redact-2page-p1.txt | Bin 0 -> 84 bytes .../expected/pages/redact-2page-p2-large.gif | Bin 0 -> 9293 bytes .../expected/pages/redact-2page-p2-normal.gif | Bin 0 -> 5614 bytes .../expected/pages/redact-2page-p2-small.gif | Bin 0 -> 1408 bytes .../pages/redact-2page-p2-thumbnail.gif | Bin 0 -> 515 bytes .../expected/pages/redact-2page-p2-xlarge.gif | Bin 0 -> 25820 bytes .../pages/redact-2page-p2.position.json | 1 + .../expected/pages/redact-2page-p2.txt | 2 + .../redact-2page/expected/redact-2page.index | Bin 0 -> 1075 bytes .../redact-2page/expected/redact-2page.pdf | Bin 0 -> 16435 bytes .../redact-2page/expected/redact-2page.txt | Bin 0 -> 114 bytes .../expected/redact-2page.txt.json | 1 + .../redact-2page/input/redact-2page.pdf | Bin 0 -> 1733 bytes .../tests/spec/documents/scan-2page/case.json | 7 + .../scan-2page/expected/metadata.json | 33 ++ .../expected/pages/scan-2page-p1-large.gif | Bin 0 -> 20114 bytes .../expected/pages/scan-2page-p1-normal.gif | Bin 0 -> 12980 bytes .../expected/pages/scan-2page-p1-small.gif | Bin 0 -> 2791 bytes .../pages/scan-2page-p1-thumbnail.gif | Bin 0 -> 813 bytes .../expected/pages/scan-2page-p1-xlarge.gif | Bin 0 -> 48648 bytes .../pages/scan-2page-p1.position.json | 1 + .../expected/pages/scan-2page-p1.txt | 3 + .../expected/pages/scan-2page-p2-large.gif | Bin 0 -> 21465 bytes .../expected/pages/scan-2page-p2-normal.gif | Bin 0 -> 13839 bytes .../expected/pages/scan-2page-p2-small.gif | Bin 0 -> 2815 bytes .../pages/scan-2page-p2-thumbnail.gif | Bin 0 -> 815 bytes .../expected/pages/scan-2page-p2-xlarge.gif | Bin 0 -> 53956 bytes .../pages/scan-2page-p2.position.json | 1 + .../expected/pages/scan-2page-p2.txt | 3 + .../scan-2page/expected/scan-2page.index | Bin 0 -> 968 bytes .../scan-2page/expected/scan-2page.pdf | Bin 0 -> 49305 bytes .../scan-2page/expected/scan-2page.txt | 7 + .../scan-2page/expected/scan-2page.txt.json | 1 + .../documents/scan-2page/input/scan-2page.pdf | Bin 0 -> 46122 bytes .../tests/spec/documents/text-1page/case.json | 7 + .../text-1page/expected/metadata.json | 33 ++ .../expected/pages/text-1page-p1-large.gif | Bin 0 -> 29695 bytes .../expected/pages/text-1page-p1-normal.gif | Bin 0 -> 19324 bytes .../expected/pages/text-1page-p1-small.gif | Bin 0 -> 3170 bytes .../pages/text-1page-p1-thumbnail.gif | Bin 0 -> 834 bytes .../expected/pages/text-1page-p1-xlarge.gif | Bin 0 -> 56698 bytes .../pages/text-1page-p1.position.json | 1 + .../expected/pages/text-1page-p1.txt | Bin 0 -> 200 bytes .../text-1page/expected/text-1page.index | Bin 0 -> 1188 bytes .../text-1page/expected/text-1page.pdf | Bin 0 -> 1504 bytes .../text-1page/expected/text-1page.txt | Bin 0 -> 200 bytes .../text-1page/expected/text-1page.txt.json | 1 + .../documents/text-1page/input/text-1page.pdf | Bin 0 -> 1454 bytes .../tests/spec/documents/text-3page/case.json | 7 + .../text-3page/expected/metadata.json | 33 ++ .../expected/pages/text-3page-p1-large.gif | Bin 0 -> 15803 bytes .../expected/pages/text-3page-p1-normal.gif | Bin 0 -> 10089 bytes .../expected/pages/text-3page-p1-small.gif | Bin 0 -> 2007 bytes .../pages/text-3page-p1-thumbnail.gif | Bin 0 -> 479 bytes .../expected/pages/text-3page-p1-xlarge.gif | Bin 0 -> 30711 bytes .../pages/text-3page-p1.position.json | 1 + .../expected/pages/text-3page-p1.txt | Bin 0 -> 95 bytes .../expected/pages/text-3page-p2-large.gif | Bin 0 -> 15971 bytes .../expected/pages/text-3page-p2-normal.gif | Bin 0 -> 10100 bytes .../expected/pages/text-3page-p2-small.gif | Bin 0 -> 2015 bytes .../pages/text-3page-p2-thumbnail.gif | Bin 0 -> 474 bytes .../expected/pages/text-3page-p2-xlarge.gif | Bin 0 -> 31291 bytes .../pages/text-3page-p2.position.json | 1 + .../expected/pages/text-3page-p2.txt | Bin 0 -> 95 bytes .../expected/pages/text-3page-p3-large.gif | Bin 0 -> 15954 bytes .../expected/pages/text-3page-p3-normal.gif | Bin 0 -> 10279 bytes .../expected/pages/text-3page-p3-small.gif | Bin 0 -> 2030 bytes .../pages/text-3page-p3-thumbnail.gif | Bin 0 -> 476 bytes .../expected/pages/text-3page-p3-xlarge.gif | Bin 0 -> 30744 bytes .../pages/text-3page-p3.position.json | 1 + .../expected/pages/text-3page-p3.txt | Bin 0 -> 97 bytes .../text-3page/expected/text-3page.index | Bin 0 -> 1342 bytes .../text-3page/expected/text-3page.pdf | Bin 0 -> 2220 bytes .../text-3page/expected/text-3page.txt | Bin 0 -> 291 bytes .../text-3page/expected/text-3page.txt.json | 1 + .../documents/text-3page/input/text-3page.pdf | Bin 0 -> 2138 bytes .../processing/tests/spec/generate.py | 126 +++++++ .../processing/tests/spec/harness.py | 351 ++++++++++++++++++ .../processing/tests/spec/make_corpus.py | 169 +++++++++ .../processing/tests/spec/test_spec.py | 72 ++++ 162 files changed, 1546 insertions(+) create mode 100644 documentcloud/documents/processing/tests/spec/.gitignore create mode 100644 documentcloud/documents/processing/tests/spec/README.md create mode 100644 documentcloud/documents/processing/tests/spec/__init__.py create mode 100644 documentcloud/documents/processing/tests/spec/compare.py create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/blank-1page/input/blank-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/input/force-ocr-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-2page/input/mixed-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/input/mixed-sizes-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/redact-2page/input/redact-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/scan-2page/input/scan-2page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-1page/input/text-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/text-3page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/text-3page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/text-3page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/expected/text-3page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-3page/input/text-3page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/generate.py create mode 100644 documentcloud/documents/processing/tests/spec/harness.py create mode 100644 documentcloud/documents/processing/tests/spec/make_corpus.py create mode 100644 documentcloud/documents/processing/tests/spec/test_spec.py diff --git a/documentcloud/documents/processing/tests/spec/.gitignore b/documentcloud/documents/processing/tests/spec/.gitignore new file mode 100644 index 00000000..ceddaa37 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/.gitignore @@ -0,0 +1 @@ +.cache/ diff --git a/documentcloud/documents/processing/tests/spec/README.md b/documentcloud/documents/processing/tests/spec/README.md new file mode 100644 index 00000000..64f735e1 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/README.md @@ -0,0 +1,162 @@ +# Processing Pipeline Test Spec + +Golden-output tests for the document processing pipeline. For each test +document in `documents/`, the `expected/` directory contains **every file the +current pipeline produces** for that document, plus the database-facing +metadata sent back to the API. The goal is to be able to change processing +code and validate that the outputs (or exactly the outputs you intended to +change) stay the same. + +This builds on the output-contract spec in +[MuckRock/research `processing-pipeline-spec`](https://github.com/MuckRock/research/tree/main/processing-pipeline-spec), +which documents *what* the pipeline must produce. This directory makes that +contract executable against the real implementation. + +## Layout + +``` +spec/ +├── harness.py # runs the real pipeline in-process (no mocks) +├── compare.py # comparison / normalization rules +├── generate.py # regenerates the golden outputs +├── test_spec.py # pytest: fresh run must match expected/ +├── make_corpus.py # builds the input PDFs (deterministic) +└── documents/ + └── / + ├── case.json # doc_id, slug, processing settings, redactions + ├── input/ # the "uploaded" document + └── expected/ # everything the pipeline produced + ├── .pdf # processed PDF (OCR text grafted in) + ├── .txt # concatenated text, pages joined by \n\n + ├── .txt.json # per-page text + OCR metadata + ├── .index # I/O cache (implementation artifact) + ├── pages/ + │ ├── -p-{xlarge,large,normal,small,thumbnail}.gif + │ ├── -p.txt + │ └── -p.position.json + └── metadata.json # captured API callbacks: page_count, + # page_spec, file_hash, status +``` + +`metadata.json` is not a pipeline storage file — it records what the pipeline +PATCHed back to the API (the `database` key is the merged final state, and +`callbacks` is the raw sequence of requests). + +## How the harness works + +`harness.PipelineRunner` runs the actual serverless functions +(`info_and_image/main.py`, `ocr/main.py`) with: + +- the `local` storage environment writing under a temporary `MEDIA_ROOT` +- a real Redis (`REDIS_PROCESSING_URL`, defaults to `localhost:6379` — the + same requirement the existing pipeline tests have in CI) +- pubsub topics dispatched through an in-process FIFO queue, so each function + runs to completion before the next starts (in production every message runs + in its own Lambda; pdfium cannot be nested inside one process) +- API callbacks (`serverless.utils.request`) captured instead of sent + +Nothing inside the pipeline is mocked: pdfium rendering and text extraction, +Tesseract OCR, PDF grafting, pdfplumber text positions, and page_spec +crunching all run for real. + +## Test corpus + +| Case | Pages | What it validates | +| --- | --- | --- | +| `text-1page` | 1 | Baseline: embedded text, no OCR, full output file set | +| `text-3page` | 3 | All pages get all artifacts; concatenation order | +| `scan-2page` | 2 | Image-only pages: OCR text, grafting, OCR positions | +| `mixed-2page` | 2 | Per-page routing: page 1 `ocr: null`, page 2 `ocr: "tess4"` | +| `force-ocr-1page` | 1 | `force_ocr` overrides embedded text (`ocr: "tess4_force"`) | +| `mixed-sizes-2page` | 2 | Differing page dimensions; page_spec encoding | +| `blank-1page` | 1 | Blank page is OCR'd; produces `"\f"` text and `[]` positions | +| `redact-2page` | 2 | Redaction path: only the dirty page is reprocessed; page_spec is not resent | + +Inputs are built deterministically by `make_corpus.py` and committed, so the +goldens always correspond to known input bytes. + +## Running the validation + +```bash +pytest documentcloud/documents/processing/tests/spec/test_spec.py +``` + +This runs in CI alongside the other tests (it needs the Redis service the +existing pipeline tests already use). Cases that need OCR are skipped unless +the OCR runtime is available (see below); the embedded-text cases always run. + +To check outside of pytest: + +```bash +python documentcloud/documents/processing/tests/spec/generate.py --check +``` + +## Regenerating the goldens + +After an *intentional* change to pipeline behavior: + +```bash +python documentcloud/documents/processing/tests/spec/generate.py [case ...] +``` + +then review the diff — it is a precise inventory of what your change did to +the pipeline's output — and commit it. + +### OCR requirements + +The OCR cases run the bundled Tesseract, which is stored in Git LFS: + +```bash +git lfs pull --include "documentcloud/documents/processing/ocr/tesseract/*" +``` + +OCR output is only comparable when produced with the same language data, so +the harness pins `eng.traineddata` by content hash +(`tessdata_fast` 4.1.0; `generate.py` downloads it into `.cache/` on first +use). If you want goldens that match production OCR exactly, place the +production `eng.traineddata` (from the `ocr-languages` storage folder) in +`.cache/` instead and regenerate — but note the committed goldens must then +be produced with that same file. + +## Comparison rules + +Some pipeline output is intentionally or unavoidably non-reproducible, so +`compare.py` normalizes: + +| Output | Rule | +| --- | --- | +| `*.txt` (full and per-page) | exact bytes | +| `*.txt.json` | JSON equality; `updated` timestamps ignored (wall clock) | +| `*.position.json` | JSON equality; coordinate floats within `1e-4` | +| `*.gif` | exact bytes; on mismatch, pixels are diffed and reported | +| `*.pdf` | semantic: page count, page dimensions, per-page text layer. Bytes are not compared — the OCR grafter writes uuid-named XObjects and pikepdf regenerates the document ID | +| `*.index` | presence only (gzip bytes embed a timestamp; not part of the contract) | +| `metadata.json` | `page_count` and `status` exact; `page_spec` compared decoded (segment order follows Redis set iteration and is not deterministic); `file_hash` exact, except for redaction cases where the final PDF is rewritten non-reproducibly | + +Behaviors of the current pipeline that the goldens capture and that any +reimplementation would need to match (or knowingly change): + +- Text extracted by pdfium ends with a trailing NUL (`\x00`) character +- Text produced by Tesseract ends with a form feed (`\f`); a blank page + yields `"\f"`, not the empty string +- Pages in `.txt` are joined with `\n\n` +- `ocr` values in `txt.json`: `null` (embedded text), `"tess4"`, + `"tess4_force"` (when `force_ocr` is set) +- The `updated` timestamps are milliseconds; each page carries its own +- `file_hash` is the SHA-1 of the PDF as hashed during page-cache processing + (before OCR grafting rewrites it) +- Redaction re-sends `file_hash` and `status` but not `page_spec` + +## Not covered yet + +- **Textract OCR** (`ocr_engine: "textract"`) — requires AWS and an AI-credit + API; the golden harness only runs Tesseract +- **Non-PDF uploads** — document conversion needs the LibreOffice bundle + (`document_conversion/libreoffice/lo.tar.gz`, a large LFS object) +- **Page modifications** (reorder / rotate / insert) — the modify path needs + `storage.async_download`, which the local storage backend does not implement +- **Bulk import**, **set_page_text**, revision control copies +- **Non-English OCR** — needs additional pinned traineddata files +- **Large documents** (image batching across multiple messages) — would bloat + the repository; `IMAGE_BATCH` behavior is still exercised, just with small + page counts diff --git a/documentcloud/documents/processing/tests/spec/__init__.py b/documentcloud/documents/processing/tests/spec/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/documentcloud/documents/processing/tests/spec/compare.py b/documentcloud/documents/processing/tests/spec/compare.py new file mode 100644 index 00000000..bf2fdf9e --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/compare.py @@ -0,0 +1,284 @@ +""" +Compare a freshly-processed document directory against a committed golden +(`expected/`) directory. + +Comparison rules, per file type: + +- ``pages/*.txt``, ``{slug}.txt`` exact bytes +- ``{slug}.txt.json`` JSON equality with all ``updated`` + timestamps normalized (they are wall + clock times) +- ``pages/*.position.json`` JSON equality with a small float + tolerance on coordinates +- ``pages/*.gif`` exact bytes; on mismatch the images are + decoded and the pixel difference is + reported to distinguish real rendering + changes from metadata drift +- ``{slug}.pdf`` semantic comparison (page count, page + dimensions, per-page extracted text). + Byte comparison is skipped: the OCR + grafter writes uuid-named XObjects and + non-reproducible ids +- ``{slug}.index``, ``*.pagesize`` presence only (implementation artifacts, + not part of the output contract; the + index is a gzip whose bytes embed a + timestamp) +- ``metadata.json`` the database-facing fields must match + exactly: page_count, page_spec, + file_hash, status +""" + +# Standard Library +import io +import json +from pathlib import Path + +POSITION_TOLERANCE = 1e-4 + +PRESENCE_ONLY_SUFFIXES = (".index", ".pagesize") + + +def compare_case(expected_dir, actual_dir, slug, ignore_metadata_fields=()): + """Compare two document directories. Returns a list of human-readable + problems; an empty list means the directories match. + + ignore_metadata_fields lists metadata.json database fields excluded from + comparison — used for file_hash on redaction cases, where the final PDF + is rewritten with non-reproducible ids so its hash differs run to run.""" + expected_dir = Path(expected_dir) + actual_dir = Path(actual_dir) + problems = [] + + expected_files = _relative_files(expected_dir) + actual_files = _relative_files(actual_dir) + + for missing in sorted(expected_files - actual_files): + problems.append(f"missing output file: {missing}") + for extra in sorted(actual_files - expected_files): + problems.append(f"unexpected output file: {extra}") + + for name in sorted(expected_files & actual_files): + problems.extend( + _compare_file( + expected_dir / name, + actual_dir / name, + name, + slug, + ignore_metadata_fields, + ) + ) + + return problems + + +def _relative_files(directory): + return { + str(file_path.relative_to(directory)) + for file_path in directory.rglob("*") + if file_path.is_file() + } + + +def _compare_file(expected, actual, name, slug, ignore_metadata_fields=()): + if name == "metadata.json": + return _compare_metadata(expected, actual, name, ignore_metadata_fields) + if name.endswith(PRESENCE_ONLY_SUFFIXES): + return [] # presence already checked + if name.endswith(".position.json"): + return _compare_positions(expected, actual, name) + if name.endswith(".txt.json"): + return _compare_json_text(expected, actual, name) + if name.endswith(".txt"): + return _compare_bytes(expected, actual, name) + if name.endswith(".gif"): + return _compare_images(expected, actual, name) + if name.endswith(".pdf"): + return _compare_pdfs(expected, actual, name) + return _compare_bytes(expected, actual, name) + + +def _compare_bytes(expected, actual, name): + if expected.read_bytes() != actual.read_bytes(): + return [f"{name}: contents differ"] + return [] + + +def _compare_metadata(expected, actual, name, ignore_fields=()): + problems = [] + expected_database = json.loads(expected.read_text())["database"] + actual_database = json.loads(actual.read_text())["database"] + for field in sorted(set(expected_database) | set(actual_database)): + if field in ignore_fields: + continue + expected_value = expected_database.get(field) + actual_value = actual_database.get(field) + if field == "page_spec": + # The segment order within a page_spec depends on Redis set + # iteration order and is not deterministic; compare the decoded + # per-page dimensions instead + if _decode_page_spec(expected_value) != _decode_page_spec(actual_value): + problems.append( + f"{name}: page_spec decodes differently: " + f"expected {expected_value!r}, got {actual_value!r}" + ) + elif expected_value != actual_value: + problems.append( + f"{name}: database field {field!r} differs: " + f"expected {expected_value!r}, got {actual_value!r}" + ) + return problems + + +def _decode_page_spec(page_spec): + """Decode a crunched page_spec string into a page number to dimension + mapping (e.g. "612.00x792.00:0-1" -> {0: "612.00x792.00", 1: ...}).""" + if not isinstance(page_spec, str): + return page_spec + pages = {} + for segment in page_spec.split(";"): + dimension, _, page_ranges = segment.partition(":") + for page_range in page_ranges.split(","): + start, _, end = page_range.partition("-") + for page in range(int(start), int(end or start) + 1): + pages[page] = dimension + return pages + + +def _normalize_updated(document): + document = dict(document) + document["updated"] = 0 + document["pages"] = [{**page, "updated": 0} for page in document.get("pages", [])] + return document + + +def _compare_json_text(expected, actual, name): + expected_json = _normalize_updated(json.loads(expected.read_text())) + actual_json = _normalize_updated(json.loads(actual.read_text())) + if expected_json != actual_json: + problems = [] + expected_pages = expected_json.get("pages", []) + actual_pages = actual_json.get("pages", []) + if len(expected_pages) != len(actual_pages): + problems.append( + f"{name}: page count differs: expected {len(expected_pages)}, " + f"got {len(actual_pages)}" + ) + for index, (expected_page, actual_page) in enumerate( + zip(expected_pages, actual_pages) + ): + if expected_page != actual_page: + for key in sorted(set(expected_page) | set(actual_page)): + if expected_page.get(key) != actual_page.get(key): + problems.append( + f"{name}: page {index} field {key!r} differs: " + f"expected {expected_page.get(key)!r}, " + f"got {actual_page.get(key)!r}" + ) + top_expected = {k: v for k, v in expected_json.items() if k != "pages"} + top_actual = {k: v for k, v in actual_json.items() if k != "pages"} + if top_expected != top_actual: + problems.append( + f"{name}: top-level fields differ: expected {top_expected!r}, " + f"got {top_actual!r}" + ) + return problems or [f"{name}: contents differ"] + return [] + + +def _compare_positions(expected, actual, name): + expected_words = json.loads(expected.read_text()) + actual_words = json.loads(actual.read_text()) + if len(expected_words) != len(actual_words): + return [ + f"{name}: word count differs: expected {len(expected_words)}, " + f"got {len(actual_words)}" + ] + problems = [] + for index, (expected_word, actual_word) in enumerate( + zip(expected_words, actual_words) + ): + for key in sorted(set(expected_word) | set(actual_word)): + expected_value = expected_word.get(key) + actual_value = actual_word.get(key) + if isinstance(expected_value, float) and isinstance( + actual_value, (int, float) + ): + if abs(expected_value - actual_value) > POSITION_TOLERANCE: + problems.append( + f"{name}: word {index} {key!r} differs beyond " + f"tolerance: expected {expected_value!r}, " + f"got {actual_value!r}" + ) + elif expected_value != actual_value: + problems.append( + f"{name}: word {index} {key!r} differs: " + f"expected {expected_value!r}, got {actual_value!r}" + ) + return problems + + +def _compare_images(expected, actual, name): + expected_bytes = expected.read_bytes() + actual_bytes = actual.read_bytes() + if expected_bytes == actual_bytes: + return [] + + # Third Party + from PIL import Image, ImageChops + + expected_image = Image.open(io.BytesIO(expected_bytes)).convert("RGB") + actual_image = Image.open(io.BytesIO(actual_bytes)).convert("RGB") + if expected_image.size != actual_image.size: + return [ + f"{name}: image size differs: expected {expected_image.size}, " + f"got {actual_image.size}" + ] + difference = ImageChops.difference(expected_image, actual_image) + bounding_box = difference.getbbox() + if bounding_box is None: + return [f"{name}: bytes differ but pixels are identical"] + max_channel_difference = max(band.getextrema()[1] for band in difference.split()) + return [ + f"{name}: pixels differ in region {bounding_box} " + f"(max channel delta {max_channel_difference})" + ] + + +def _pdf_summary(pdf_path): + # Third Party + import pymupdf + + summary = [] + with pymupdf.open(str(pdf_path)) as pdf: + for page in pdf: + summary.append( + { + "width": round(page.rect.width, 2), + "height": round(page.rect.height, 2), + "text": page.get_text(), + } + ) + return summary + + +def _compare_pdfs(expected, actual, name): + expected_summary = _pdf_summary(expected) + actual_summary = _pdf_summary(actual) + problems = [] + if len(expected_summary) != len(actual_summary): + return [ + f"{name}: page count differs: expected {len(expected_summary)}, " + f"got {len(actual_summary)}" + ] + for index, (expected_page, actual_page) in enumerate( + zip(expected_summary, actual_summary) + ): + for key in ("width", "height"): + if expected_page[key] != actual_page[key]: + problems.append( + f"{name}: page {index + 1} {key} differs: " + f"expected {expected_page[key]}, got {actual_page[key]}" + ) + if expected_page["text"] != actual_page["text"]: + problems.append(f"{name}: page {index + 1} text layer differs") + return problems diff --git a/documentcloud/documents/processing/tests/spec/documents/blank-1page/case.json b/documentcloud/documents/processing/tests/spec/documents/blank-1page/case.json new file mode 100644 index 00000000..1e67e00d --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/blank-1page/case.json @@ -0,0 +1,7 @@ +{ + "doc_id": -9107, + "slug": "blank-1page", + "why": "Edge case: a blank page has no text layer so it is OCR'd, producing empty text and an empty positions array.", + "settings": {"ocr_engine": "tess4", "force_ocr": false, "ocr_code": "eng"}, + "needs_ocr": true +} diff --git a/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.index b/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.index new file mode 100644 index 0000000000000000000000000000000000000000..e05f80b69c16d85f9854cfb8ecba14af7b20f24b GIT binary patch literal 347 zcmV-h0i^yPiwFQ|OI2zD|GiPoYQjJmjKyB|DfSZR$^FfmKnR#sp#-VK-o(SUStUhG zNg~)np(mdpeU$bAy!bGEiEdIzrS{zKIN!|d%(t)Ix7mf&%u96@Sy6Xi$*w&ej;rW$ za_sD@@Yt~|((42J@P7CJfItkhy9eO===SMRBdJQY&Q@ruR=R-HY~vsRdXv;7K!33t z7LwU^Q$m8GG%4o1mMl&*tks-={0}2E(MhVpY&XYdD+q;sk1kN0m8#SbqgWT&HorHq zYRlMYa&6xIopG1zCBV=DxE&}QhdFQwTZ{*KwHPRKm9BMO7n!Bc z8agI#W{%M$ydKVd$=py<4+}2oKuYQgHjvB ta3#T#)1ba)QL4Obs!=L{ZI5oopo%`D#C&k_A5E)m?+Y&~Kn7j{000Ecs}KMH literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.pdf b/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/blank-1page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..632811a7eeab6020881215427d7c1beb7e864a1e GIT binary patch literal 2736 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 y`MDx<^O$Eh@%boFgtXvRJ@S009UbNU)&6 zg9sBUT*$DY!-o(fN}NcsqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*({Vj%brcUw(Z-vbL-yCySMM( zz=I1PPQ1AB+*pMVA`=%9oaYUrVeCaUP7j5g}%qmV`_>7ZqiaYU-(|rmE_ythVavtFXrZD(kGY)@tjmxaO+suDtf@ z>#x8DE9|hu7HjOW$R?}ovdlK??6c5DEA6z@R%`9G*k-Hkw%m5>?YH2DEAF`DmTT_0 z=%%agy6m>=?z`~DEAPDY)@$#*_~xtczWny<@4o;CEbzbt7i{ps2q&!Y!VEX;@WT*C zEb+t?S8Vac7-y{U#vFI-@y8&CEb_=Cmu&LMD5tFQ$}G3+^2;#CEc47X*KG66IOnYM z&OG<*^UpvBE%eYt7j5*>NGGlI(o8q)^wUsBE%nq?S8esxSZA&E)?9b(_19pBE%w-C zmu>dhXs50A+HAM&_S8Pi!`s%E=?)vMn$1eNqwAXI? z?YQTz`|iB=?)&e+2QU2a#20V;@yI8y{PN5<@BH)7M=$;K)K_o)_1I^x{r22<@BR1S zhcEv4<-fe?(K1Sd$r3R>`j7|fssH^{*bdhmlF450`|NWv1D@PsH#p$b>X!WO#l zg)oev3};Bg8rtxNILx6AcgVvY`tXN945ASKhe*UC8u5roOrjE($iyZ(@rh83q7TiOrsjt$i_Ch@r`hdqa5c*$2!{aj(E(Y z9{0${KKk*GfDEJ{2T9068uE~cOr#({Vj%brcUw(Z-vbL-yCySMM( zz=I1PPQ1ABib#-;b=B&G?wywUuKEaTUg~1vC2i`yz literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..ddff8779bbdbeadd0f93c9f28442ce64f2ebeda5 GIT binary patch literal 4533 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.position.json b/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.position.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.position.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.txt b/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.txt new file mode 100644 index 00000000..8214d0ee --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/blank-1page/expected/pages/blank-1page-p1.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/blank-1page/input/blank-1page.pdf b/documentcloud/documents/processing/tests/spec/documents/blank-1page/input/blank-1page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4189865f07e5a8656ad5f9cc7ba444301df44247 GIT binary patch literal 460 zcmZ8d%WA_g5WMRv_Tpo!mo3|14Dlv`Qc8o{o5?|~mEaPhVk?mLzuFJTmsRq?HQt+M zW@kqe?bh2nexH))_H+9sgaZTn_Cbn*zJ7fgirVRuJ<^>%ngN7o>#`)~+y)T|@40$Z zQM8w{15O{ic4*?TvY+k9X=ero)zXMQnYPoFy*A9ViVH|{v8T0l+8JQ9HiNzN?><(r ztbN4Z_`A!D*WMfmgM_eYKqZMx-~bcG6^tyL|1ssA!ptzveb6Q5ohFR9UUw(chyGr= zZv%1Ia4u;6{5(LT%pV>CgKcbCCeh_l4XK3m2UX9s<_DVHO9zR Y8FGfPC_|fr)4dzNCWInUw0Yi=KgDTvqW}N^ literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/case.json b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/case.json new file mode 100644 index 00000000..03e87bd1 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/case.json @@ -0,0 +1,7 @@ +{ + "doc_id": -9105, + "slug": "force-ocr-1page", + "why": "force_ocr overrides embedded text detection: the page has a text layer but must be OCR'd anyway (ocr: tess4_force).", + "settings": {"ocr_engine": "tess4", "force_ocr": true, "ocr_code": "eng"}, + "needs_ocr": true +} diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.index b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.index new file mode 100644 index 0000000000000000000000000000000000000000..0be3c7c549aa290c03aa026ef8b796db8d9a6121 GIT binary patch literal 1002 zcmV$-5_9s?^#c;qQ;QXhfU-e$c3i1> zDIi5$Mrf+Rs`Q=nOY=$;4E4P;Q;MTaKw4sv^cW-bxaH@S0I7`BoH7Mdh|x$2O|TfQ z@0*&Endp>X5p4jJH8V6)Ft;>{)ep)qNi0cKFwhT5EzU13N(MR=WK9rIPf;q+Ens&8 z-IZ4Y!nQ^CR>K$oYMWF{x-yXGb5 zr)1`(>xXCNIp!5-!uUuAn;{JLNzF?y$xyJc)OX9wDM>BTcgq2~-z62OCl#opxTGjG zF_)|2mh1^dz6JvU7Ki%vJLE6Km9JFf5aQ{3B6IK}8za-<-=xPfLR~s4`6LPlqMlL5up4-1g|1$0Uwr(Z+C$@t}eRufInHMfoQtQ%N>w7;Itg+rz*_z2Hu+AgD(V_HesCU`KTLm}F z;x0^X6P5k^zbdCbKPqZV)~ee|!Yr3}TOZkd?x~$#iCoE2`Aa($H=uhA=>CeL)HE&w z1xqdiI8ZP%H8nO>NK=4|83N-5ER%;2Gc&>vGc+{86f-r&5Hm8zRA+2vj3H)fWPl-N zj_ek$lA^@SoYW#v=m%$3r7BnglX^ZdZ-LXZr%SYrv$3V6vyqd58Az*(p$U-f>TG0b z4iYypHZ`}iv9xe8cC;`waWXSAax*tIbux5vwlFs~Gjwq@H+FJ%wTlHuU1CuQIH)WQ zfT@ASn*&%-a9D7us=E5SaZT~I1BQ31-M5?b9(`G3@#4Xw@3XZUV`xrc&wJuC;pP)p)~We9W>%Yf&joz=fBnASEbCxjx3qgT z78Cfc*G&ta9=h+1k%}{xKpU+?DKECB_*yY}*8>w={Q$@B6yJYL-qk>dR1aVzP4N|C YMC6T;T@;O$3{y(=0E}eOAnFYO0EuqWbpQYW literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.pdf b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..98c983615dfd780f80a6491d74e295d9f0c04130 GIT binary patch literal 3929 zcmbVP30M=?77ic?5m^KkEZ~5mC}Jj)U3hE>AhI@LQ(UqQ7!8@2j0(7cR$38kzz1SQ z<<+X_XA!rGq9SgEB1+*YXsTFos})6*`YBr8oq>n~ul2pj_sw$eJ?H-Cp7Wn`;vOvs z_M%VcP~EFuefuYs4#5y6T}1WqfoRc^WK;_wU_=PfV$#$oMB__vi4seOe0`~?N=_^! zrVRpoY^e%|=nySTA=g5Q5Q7w*XAthy*Dp#;_lv4JvD%(`pl%FPv>T$93oZ?7^B6RPDZVqo-~JWsO#?$*fUR%iTuH45MlLcW-vZ7 z!#NC?5n!qB9{tYv^dDvWhIg7(UyP`TDBcn8gsY!-w{Ob*{{EvvcYx zMNjcTT3DOyO7D|t>lH>eWizo%|E1Sr!sZ_nnTr;Je2+o^UN6YyuJ9?@hn}0SMkEdBI*V!~;`+w+m6_GKfyFMF@-l zMA2X}5eisJFdfV%L`fH+vR*-nl)5B z<$%WuJk4t+L=!EQ;$+$(k`KXMELNo;SxE0q5`AnY_4lJ8tsM+!CO8QcSI8s~t$(|C zg(^U$RrC*hv?oYqy?Jlo4u&+D2o6*b3|673z~ImnkX8cwp8URNC^V1o8-a&By7$0_ z%wxfrCWYJ*Y~7#52(OY52DGvi$-70C3A5&3 zt@69m{PI+|ZDEzo^(dokag07eCy>0(82@bSNt^PsomRWWwWft@I;egdgg>zCEc7lZ zwRWefJB@iIS@N8^@ujcNUi~bxqD^>KcQ?z^LUz~LbKmnDw>uPfMz>wr1|Mn4cdEL$ zTR&#!)9I_%hUqda$Cf2juy>SQdsu%l&b_gv?OQj;^!ja{aeGCz<<*7GhkZ&tH=;A} zvR|sTc4LmbasA=>ZSPGt9=DH+$?a*-eSbySmGt!CznjyaK3|{Ld_D10nr^O3dxBTH z51#wEA~mq_)-gCySjK>Tln<%bGH zX<8gj2~{OwWM+xd$WaYJQx5}8rx0P9tN=AA4e|&8QI3KU(NeWqiKY+*8789@-0<#DW2-iMS?GgGQmoF%3lTE&2W22eQNxf)pTHho<8Y^&3G5-G5WS zQ*_mf&cl{j&sI~N^?bEnYo4cCfm%uYkH7LSA2Fbv~}#e$gV#kybsLYLW}9CtsqTi7Jv8 z8oqmL7!G-X^bESfWG%$%jo`rkY)(WqDGl0EB62|xg2<)!HnHSLq$CCO(gVt4DCn#e zvH(@GlI&AOfOl~am#BJV2^>I^531dVZA@=tNQYQN``XtfG8l}%XM#*D7mM#m7mCG6 z(H+*;In>JKQmTo`F0*K+E01%C;*o58FN)H6zfn82Nl@SvoAK7!|BN7bk(9dp;*T-V zijg+kP>N}4Q9@D1lga)E^79gf)#oV2InMrTCrtL^D&=_;9Na$g66?;*ze!GeC&Fk4~I{jZ3 zoUilCTsX$8yn`PzyrrC}anLbHo!DAvzQyutI`L=vIe-hu9?*ii^9bY+ki1T0=lLF zV+b2GBm>5n@L*Zi5c)Xm!TNYC&{%$~j}G$&tpiX7VWtz|Hc*zq9i$I|86a>!-UC6H zgD@kkA=Yt0avvbefML*u8uZ~B31FRuELuVg1N80fc14PG6!-zOW&$YDN5HzaVCSs@%4dWCL2aLT!hV&vDiF`i~-A}Niw-q%3~m~jNwakTi_p< TM1zw~W-t*h)!jWPDwz5o?E5_A literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt new file mode 100644 index 00000000..cda9f220 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt @@ -0,0 +1,4 @@ +FORCE OCR TEST DOCUMENT +This page has an embedded text layer, but the case settings +use force_ocr, so the pipeline must OCR it anyway. + \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt.json b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt.json new file mode 100644 index 00000000..39cac7f3 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/force-ocr-1page.txt.json @@ -0,0 +1 @@ +{"updated": 1783974764228, "pages": [{"page": 0, "contents": "FORCE OCR TEST DOCUMENT\nThis page has an embedded text layer, but the case settings\nuse force_ocr, so the pipeline must OCR it anyway.\n\f", "ocr": "tess4_force", "lang": "eng", "updated": 1783974764228}]} \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/metadata.json b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/metadata.json new file mode 100644 index 00000000..b2036f84 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/metadata.json @@ -0,0 +1,33 @@ +{ + "callbacks": [ + { + "json": { + "page_count": 1 + }, + "method": "patch", + "url": "documents/-9105/" + }, + { + "json": { + "file_hash": "29342815d1963995d88cdbc5905e62b33fa28c93", + "page_spec": "612.00x792.00:0" + }, + "method": "patch", + "url": "documents/-9105/" + }, + { + "json": { + "status": "success" + }, + "method": "patch", + "url": "documents/-9105/" + } + ], + "database": { + "file_hash": "29342815d1963995d88cdbc5905e62b33fa28c93", + "page_count": 1, + "page_spec": "612.00x792.00:0", + "status": "success" + }, + "errors": [] +} diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-large.gif b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..96c26335b3a8a57b659ed924b9d9fcc5d4f28c83 GIT binary patch literal 23799 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 F_#Yq<^#lL_ literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-small.gif b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc7620c5c5d82bcfbd211828592c3afd324bb813 GIT binary patch literal 2742 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..da7afe5583fa9914cd1052795df698fa98dbed6c GIT binary patch literal 765 zcmZ?wbh9u|v|;dLXk%db|NsBLfB*je{rl(7pWnZK|N8ao=g*%%e*F0M?c3+ipFe&2 z^zq}z4C;S&!0bg_U!4?r%#?ddHneCqeqV( zK79D#!Grtv@87$3@9y2ZckbM|ef##UTeoiBym{lsjqBI1U%Phg>eZ`Pu3Wi%`SPVp zmo8qsc;Ui@^XJc>J9qBv*|TTPoH>2^^r=&)PM$n@;>3yL$B!R7cI?QJBZm(kK6L2N z!Gi}695}Fl|NedZ_U+xfch84_HEm?ZQZ(c^XAPPH*Vap zVZ-|M>({PbyL9PNhCvK;KyCxYg#*Wb21X7Uj|~eBHggDT#bh)b>sPVM+96xSbBQ8LGr0No|~7Qoo!M4>dwi{%g@huXy%e# zHTgh8GdmlbfeN`a;!&5*wil1O4UX*yc3`ju0QM+TWB>pF literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe9ce3b9d9779a2590a3fedb553774606a491a81 GIT binary patch literal 45239 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.position.json b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.position.json new file mode 100644 index 00000000..2dc4942d --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.position.json @@ -0,0 +1 @@ +[{"text": "FORCE", "x1": 0.11857083333333332, "x2": 0.19571319444444443, "y1": 0.08784083958407103, "y2": 0.11466804021933914, "upright": true, "direction": "ltr"}, {"text": "OCR", "x1": 0.2042847222222222, "x2": 0.2542847222222222, "y1": 0.08784083958407103, "y2": 0.11466804021933914, "upright": true, "direction": "ltr"}, {"text": "TEST", "x1": 0.26142777777777776, "x2": 0.3199986111111111, "y1": 0.08784083958407103, "y2": 0.11466804021933914, "upright": true, "direction": "ltr"}, {"text": "DOCUMENT", "x1": 0.3271416666666666, "x2": 0.4585694444444445, "y1": 0.08784083958407103, "y2": 0.11466804021933914, "upright": true, "direction": "ltr"}, {"text": "This", "x1": 0.11714166666666664, "x2": 0.15999861111111108, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.1685708333333333, "x2": 0.21714166666666665, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "has", "x1": 0.22571388888888885, "x2": 0.2599993055555555, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "an", "x1": 0.2685708333333333, "x2": 0.29142777777777773, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "embedded", "x1": 0.29999999999999993, "x2": 0.40714166666666657, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.414286111111111, "x2": 0.4499999999999999, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "layer,", "x1": 0.45857222222222216, "x2": 0.5114284722222222, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "but", "x1": 0.5200013888888888, "x2": 0.5500013888888888, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.5585722222222221, "x2": 0.5885722222222222, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "case", "x1": 0.5957152777777778, "x2": 0.6428583333333333, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "settings", "x1": 0.6514291666666666, "x2": 0.7285708333333334, "y1": 0.11984998229404747, "y2": 0.14667718292931559, "upright": true, "direction": "ltr"}, {"text": "use", "x1": 0.11857222222222216, "x2": 0.1542868055555555, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "force_ocr,", "x1": 0.1614291666666666, "x2": 0.2614395833333333, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "so", "x1": 0.26999999999999996, "x2": 0.2928569444444444, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.29999999999999993, "x2": 0.32999999999999996, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "pipeline", "x1": 0.33857083333333327, "x2": 0.41571249999999993, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "must", "x1": 0.4242847222222222, "x2": 0.47142777777777767, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "OCR", "x1": 0.47999861111111103, "x2": 0.528570486111111, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "it", "x1": 0.5371416666666666, "x2": 0.5471416666666666, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}, {"text": "anyway.", "x1": 0.5542847222222222, "x2": 0.6357131944444444, "y1": 0.15185912500402393, "y2": 0.17868632563929204, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.txt b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.txt new file mode 100644 index 00000000..cda9f220 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/expected/pages/force-ocr-1page-p1.txt @@ -0,0 +1,4 @@ +FORCE OCR TEST DOCUMENT +This page has an embedded text layer, but the case settings +use force_ocr, so the pipeline must OCR it anyway. + \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/input/force-ocr-1page.pdf b/documentcloud/documents/processing/tests/spec/documents/force-ocr-1page/input/force-ocr-1page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f3ccb00264b3c4657ba822447c29863c472d9bdf GIT binary patch literal 1222 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 C&c0Lt literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.txt b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.txt new file mode 100644 index 0000000000000000000000000000000000000000..47baeb6ccbbaa13939ebbd0f84bb20594366ac3c GIT binary patch literal 131 zcmXAgK?;K~00esueZ)SX_y^I@deD?AwAa)uNkJ1a5%l*Bcv@zdZGSrrOc=MBKHacr zO9W3i9icrqe`!ok68D5jA6yHe{B$5WB61AgoF^L?vs}Yw9aQxyE<&`;N7i_jcZuPx R#PDePlk)ae*>$oO*FTteDSZF{ literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.txt.json b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.txt.json new file mode 100644 index 00000000..30ccd992 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/mixed-2page.txt.json @@ -0,0 +1 @@ +{"updated": 1783974766168, "pages": [{"page": 0, "contents": "Mixed document, page one has an embedded text layer.\nOnly the second page goes through OCR.\u0000", "ocr": null, "lang": "eng", "updated": 1783974766168}, {"page": 1, "contents": "MIXED PAGE TWO\nTHIS PAGE IS SCANNED\n\f", "ocr": "tess4", "lang": "eng", "updated": 1783974766168}]} \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-large.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..6b112a4089f3f3576afb7d62f56ce30f213e14bd GIT binary patch literal 16634 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-normal.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..c75c3fcce97e3ead639460f80139541ca453664c GIT binary patch literal 10573 zcmWlfc{r5c8^+JPvv2PVp&>Ddw9u%mi6MKN7LrOsDea>om3VD4wwNTePsx%>LnW1J zkR_?61!I3L!)Tq9n)=H8`u%bKJmpJ(jpYypNZ(lD5`_LLF9V-MtqtQ%FP5u4* zcXD#_zyJRG^XJd+-@nyr^{-#Qe*XM9F){Ju$B*ydzmJcPfBW`LrBZ$U`t{3~FP}eu z{`Be7$B!RBeE2XnHl|c6M@L6TMn)70#qjX((9qD};NZZ(0E(jh{r!D?eZ9TCJv}|$ z-Q8VXU7eksa=E;tqocjOy{)b7{rmUt-o1PK_U)TDZ)7sr>({Sey?XWX<;&LA))y~c zw6wH5fBw9=xw)ySsj;!Kp`qc~vuE}7^>uZ1wY9ZUsr2d7r%#?ddHncsO-;?CM~@yp zeE8tOgX-$)`}glxRaM=)ckk}qyLax~sjRH5sHl)gB)4zhE-x>?b?es6n>TOVxKUPC zcK!PG($dnBl9J-$;-aFWYuBz778YK;diBbcD`K(u^5x5yE?v5K@#2LG7tWtQf9~A5 zvuDp16cps==jY|+ojG$RH#hh6>C-tmIj2sY5{X3F+1XiHStn1P%*@Qp$jC@fPftrr zOHEA`3WWlJASERwIXO8gDJd~AF(DxVL6G?P__(;Z6DLl@#>O5$e*D<6V@Ho3jfsgl za^y&KbaYfy)ZxR24;?ym@ZiD7$Vfh)f8fA@{rmUt+qZA;-o1PF?Ag70_pV*LA|fJo z?%cU!$Byvu@a@~TZ`-ylEG#TEG?d5VZQZ&xBqU_ZmMxn%Z{DP7!VM!e*OA&>(;GZyLQc*HU9qot5>gHwQAMMl`B`QSh0Nhaz8&mUteDzA0KaT zZ!a$|Pft$|507QbmbtsTySce>xm;IQR~HwTrAwDOJ3B8~vc$>B$zu~^fmPuJ7a)7910 z(b1VUZJM^Www9I_lgVT-7%&Xe>2w;6Mx|0I6bhM4CXq-)B9TBK;PH4I4u{2JAqc`? zFaUu0{}%Ya7Pur0z>o}mB;wj6(zLmoneFW~ue#ZJC*ob%mKRmGy6^LcS}rcXU*7vD=KF`< z7x!=XKSi)fx&YZwW<3VuSUjucoVDQQlHd`Uf`-#$?Z5I@R|7>VjRr_QuXvX$)xovXU=68*Ie!k*K+_# z-YHhxA%bx{6Cr%RW?DynocSFZn(&YS$GToln#%&5taIm;lY~U)^GcDo%cLAgId9Z_yn{xHks4^kp^5qr z@scFhxKFBP*Uu3=bFj4<+o}g7P_~xk=7ZTJ@a)@bvaPne)aZ{mF*&*1L?c^e2uRbi zVFS*$)dql5|6&iRx{wG8<@Gp9mg)`!E={iU)}fFr_63&L&KAW&WPhuwd_9k#DlA_0 zc~4tb#=d*KcF*=bBwX2(WP#sH1?HWxOOQR<@ZtS-_dU)xxW>WKTUCUUFUsApg^xrJ zu=+Lo_b6RznD>7>JyYGIzo33;>`gy!(`Yy?*}9g!DWkj&Z$G(@w4!yWKArh-$>-L^ z9ecmObU0%E1yeOyn96WvkH5AeMSQerB=syKJ|L0VT%&lB47eQ3opY&d?meslI@q?`A=*3Ui08IQ}W7TPxGMi$@S=6E#j=NqGe^ZjwR*C_CPGzBBQz2 zq+Ux~xqwU6)X)&J28RJIhwc(;?KRF?Tm@=fzk*8X`R=uc(0ZB(q9(BdqL*A*5qo-a znFqnG=XCGvKkPRN(>3hG>-+T%e`DxE$g-DIqnNj^$>8v5GQb1>mzIF}Y-zL<<2+et zpw7u=!l}td9`*W=sMhrfGr{2fps^4jh88{$7RCa52W?Uaj~>lsZ%y8q;(QEA^q<_O zRsEZ&zZgx9U+nItAw45TaN$U%_}E$*fHm#4X}SSfG>sg>{6VuY%n|rIiHn`I5wxcQ z<8qKd&UAw@DT6aPq6C{MEdu?Z3~2z!%#kZBP+e>E=1(wi;lKy?V(>P+FwLH z_S|@G>58Jc8=kiWJ{&(I$t;?`)AvPi*LYraYmxPl=PyG3jOR;f#T=n;YnZ|Jg60*) z3-h11?r{2kR+d@3xWxD6?%?m|!0E>o=E+iz z*?w=*gMVCQy)5;zZ+Vk->_;J+e%;60?`_VxAJ;5bUiaJ3@;2|`k0Q>=>nnEpy*ta((JZGOx9VyB7g{wK@Um-w}n1y7U(y(|m7 z-_lloY~luwej}*Kuf6iz#LbA6H-bA_+N&N;+~S|Sv3b<5<6+lCdCbcjA-`HWp8T1( zjnHrMh|A@520taKD{qEPe<5#l`dJ}5d2{>h<()0TKPwAf-rQmTqVv_UpLb#->Ba&r z=ep*d)OsEkBqEvAYah4I%3y$l;*4J!@%*h9IqQ?dGOFaoE4R;@vAGJGUEV#{Ba45i zYu}othf=NN`;WI+w~&@~Q%D;&*EH;Rm&|ZbLiyF9iwuAcH^cm})t-dY4Dzv4km&<2 z-Qb`#ky->`JnRl-w|o;7W6vbug1#ft`jPl`WDHU;38Zj2}AcmJ^hx6)bRrVhb+U`mOe=}1tJDa zn)Q;Yu5+EwW-@+Y$uxE{0%S??KY;t0dfXC1C2lSTF^mm*V;{H9v5sk`hdnDbB%#>2 z^<+@doWgaHFwB71sCHWOfiqFh0wPBj73vs-IRsd!*g4^o-q3alZfMfRP478<4ZHS!lLlgw!}p!)zu~ zVB`qy08`<=!uW3JLf|nZpvQQR;!Lv_0c1u#t9eFM=-rl$riS{=REjBz9M279i)B#@ zcbwX9xnjULRmaEC5`*jl+t^)*i6d+!3X|2?j_X6No7qgF%8Z5uSS+D33q7%I8g`dp z5fG*Ar48eLk!tsl3NgKR9~<32>TPna?(Y;4hKDsdP^Ju2s!qsQ4G_^ti?uT;5a(73@^owUkC`BgtErw^RXLGx<#;p2Y=HId3!I8go&gN#J>)(#_;2R-;XEh zMYbqT=*my93K9&e6Aa}EM(PAME78;;aaK^GMNFb)LE_x%#QE|>Yjq-rm9)?yX>m}J zT}+ZgL6TE-lCwO?MV-WDCA&K$djutW#U%R_B>Pn-uaGCNQYZVfQr0@8tPe^Fj7bS9 zNC~b^*(^^9QK#@&f-ncc_8`HI7(qmVV0X1(uUxQSE#R|+2OWfmgM`sB!k7Z#v1(zg zTo|VoBCOOzht%YtR6$H?YC&pxb!w(OHA|yT6|vHC9MW=w((+=`3JTKBRi|B$r(IH~ ziCO7a9n!A_r5DGfmlmX#Rj1#SrX$6B1VZUcR--P+57 z)C-w|f@e5<7vd3vbg&o$pW)SV{ zRul2gcjinJkqD;=#pLCj`o#h?!1#7XlssV2t3EknHrq@#8(RU&wcsO65s3pW-epyF z8uyF6zbz5&4Ba^mIof0vd%+vvRg6t~Cclbdq{`6z-*JdjGZtteN0YDYB+0Uud$JyI z%<8$JrvbG=j{?~EKjQ2h6RLEaj*6+ZGU{82*&8+)D*{*)`%`js{0;sW7lT#VzhIIn zD#j`fAaZ~!f3A!}KA&dw?}6whfawV1TMF$u+nR$i>`;$O==Mq#{D4WT|LO8afLrw* z^P7W*RAd={!H)p)W9A7+h55^k!>|b##8ebzm`EWF8w+vxk3qqZs31erS@78$j1N%i z_|D^QbT=Y{&*l&i_z)9(7SkWGX*GPh28|dYgOyT-A)DhZVLX{$kjJCSWsKEgw_j4Y zio4yG2)4<{51H_PvXD_35zAcACy9Cf%it{+e#oXhmeQ<>L+7B2D-r4-1WodBfXxWt z016vq%IHLtKKQ&qBf?bq`;a(bmY89I5WX_6oq0z;Bm%#=^cptpk&6CX3VIOIDM#St z&+u(J*(W7o5z~5!iEC76&FpWv<FD~zmytm#R4-v4O>dNFNwjcNZ&c|7YW&o0#2x4R1703gPB~~S23K# zrUf8-78Af+CTzoIX7a*LnZOD@{89#W4bZu4ransN9K)jiFoBEj-erFAA^kEBMgeJ+ z8RiZbZs*dsBQ%8`xFmx|nAG<&@~v+-3WLkq-C4`TbfrK1UV;T8@J4j7X^1v=AxHy^ zK^a^u2ER>>Jy5zY5xD;I*a5QApWdY+NYGMOF@2Z`E2MapiODn`b=--*O+ve_X{Wt5 zGj8HWG%sUCO5q_f{D3#d8NgtS?A^{oQ7j~;okr+GJb3kNW3aqT3pEJg!-HJ-6qCN3 zfHg^nuQF+6Q6Qhm7)0T-s0R=euXoY2WwcEXO?NRFHvlkEQ9rTa4-x`kV-+GiWP=;y zhi7saPp@1cvgxaZgi#*7mrp+KPuF5|4#*hSa$@xn>Ss3mkxhhb$dY!~JxoT4SrQF7 zOnv(g4qg zodSW142qcy92a^hBlO5%IXauFg0};x|DPD*J!P(@NY4Twn@5QgMgumkl}#CB!}ZAicq)BNR3$`hQe^N)9xWg2$?Kwjmcchv;O}ezODLbj za4DPG=>{^S@URF@mt9`ZhCj*RE3#Qcgj_TP`_4Bp6ViXksK#uff=?P1!G&zL4nn)8 zVjQ`F>*2$r|1Mn)XhreR8}JrfSzuV7?@u*IhEsU(7(&_bU)dZLgK-d~`LPDXd(Hwz zp~e?L>%e+;Or(TSwTSsuWSo93q4m-2$)UyAon$ovYU;7j8fZ#|1%PpAH!TOnOz>kT zZRvT^`Y-5x3=e#g60khRRT-hC2k)Ueh10^N0{D*vI~Qf7$q0L8gpE=xfd?Dx1~Z(1 zkP8oLFSxIwHZ(^4#nN+CXVUm-2JBPaTl7yCXu?)%i+_vLS&YG(iV z(*7S?`hTA2S6}S^^SFPqw}0wyKQKZe7ZewQ65>$OC6w|6rS+lk6v{Lj&~_Qn2^r9f z8(>`;FnBUx*f(G_HNZ9+G<6xA6*6cMH)wfjaPE`A`F(@dQ-d6%p@l9(i$jL&;)Wb9 z4LLm-a_$>)nHu664ZFJxdxQ*o#SQyh8uoiKyrOS-)zq-Rkz%cjVtt4rFisJ4NfG=+ zvAItXGNs@djfA<3Y!4aP5jPTXX=L}4k-dE*`=>_uMxzH^Mh}OKM#qiDTpB(0WHh#K zG;V4XF;XVFD3e2!f;eTW=8`h~i88ZKnKh*p8I9$*jOB)m<;9H^TpBy~Wb8uU*rlm4 zvC)UCE+4Lid?=3lP`9`#zLUeUKP^taSM}JFDmE_K(Dbk2^eB5*4GL>8+he z(}+u4#MHTYHCvY1-!{Q(Bu57lt*|os6y@>eMfPlt#7JW}|@WZh?V-REd5fMtxmqOWZs_6EgRCiM9$ zO3W?%#4!WGvcf=9>!W};^1wFnjt!AXUIR*goV8P{uN_9Qs6<{8!r5WOBzSZnDyX18%8;#Hjyy|NW@KW zyu>t6MgJ^RUHkjExH28-!2W2A4qIlu$}#PfTlzP1d!e;C~! z2gH*3GA`$BaO~TTy>#%8va%zHL_i4s(0J>`VQJ!BOAG~AUYm;~uJ|b5w`8GY&5hkZ zocM;U^-BM%o+phw&#fO@TfFk3ONv3jhxKIvw?byl^`Cx=s7}W_!EE3BwaV_We6gDX~-Y!eesWP-cP-%m#_#o{)bQ+F$9P|S8hup}SP zmF&g_OrBrJdA|sxw&E3{1s?eL!-QznbR1V>UgJpw5y{pOXW|W<#bl?U%V}7(M_lZE zGS}t-wxVE(EFU0CRn8D!`jv(pxlAC4HW0YBU$LG1k1W(KC*GG}J!WrG*O;L7bB>l| z!D}hbF7cS5TTQ}#bqNkM?lQNG8V0?^9Hx<5m^*>Uvp{S&HVS2xcaJbYpn6mwKIgcd9U|() zR}wykLP)nWbiL7LJt_U{8Xz+@rh|y9mxv41C8^@XS{zs_t)08darD}qRZG4;TlCry z-_no|-m{1ayUR&Z1Ah$=xf{dI=|h)yvJ0LYZWIb{!F*Z>M{KxkyHuB+b9Bem<2_?h_Gf{xqPR4^Mi(Bg{ zWOqEGyX~fq(qK72N*V#le>RL62~BzH{63}*gPiw2%%1gU48?@MbyQ@{|B;qhzbN9j zcRuc)ZvvfX10$#Hd(hc<&^lJ{2c#y~+_G_U0xPXo;+|+UX%ouccvxSV6qkvU{%@ugSp85tM3#aslAcMX%3uN}x zDbqxY!A|1(yy;oR`BW#C!q^9Z;mh+aSc%4d0JX{>W~pbxMlbXe@Y|*;Ah0t~-?Gt= zpq*k1*h&A0C)SiDaJ7&o#9I#7YQzw*Fk#e^5_ApyTlZ1EWouTKB4ky>I`$6?L}b>^ z(5Mp5f2v4==MNea7h%6&_?5MjDK>+?NtcFHVCc=JMmlV;ly#SLWcU-TktX5~i?Tz0 z`0af69~tDRvdInu#*Y37J^dTQij5lIl5z1<{_Lz3JDF+~f=vfm@#>P9i0rH*^9}o= zZ-Uo!KE|=m4VctKuX<1h8Ahu=S7<2h~J6g$oC) zM{t$uCPV&rhDDH=r18gtN>#Rn2bc0gD(nj)AbVAHI09c_AHu^-Pr-ovYHu74$=V3S z^YUffV=ikMcC)0$@&15h`i(I~*YH5SvdJh`FY{ol6w0`{X5KlsCJU)4HvP&Lr?v;H zqN`3{Y^SvxCb%QrBm`iBr15}{KrzoSi`0mVITuR+sJZ(Cn7WGdTI|mwxc`BH1uu#0 zp#$cUlmO@c`s|c$h`Z+W1wJ*H2>J1HhBg#^*5Oq4k$(VmHsPM`upYL<`+2xOA@W8j6gK0WtH| z%mNAGR4ze7QBooI52r9(JyX1HI(?~j!VCvnC@l)N0MX8kv1KPMzF4#*;8AdURr|fQ zW4rfSIc<76e`3k;kGli+9`Ek?8GgV$axm)Pk{*r2n#)ZSw>D1uZ-WPI{yn#`Gv4f` zr2XP$hMz^o<-3pPcD3j|c+&g%$RmT^C#3uuPm{0n(>CRPj=O&|{oC>b-J3R#>E)M` z{#u=QB!UnPFU}YUvkmsM-oG$@QKrOcX!yyYZ(H5viW9Rf@?z+dX6u!ZOv8f zm)9E;B2zt`!?g3|&t`i?rU%r7>D`w%ED%IyhC6RF=#V$sH%4Yf)oe5RC2w*i929NI zui^&;HG2y*>44MvkWUT=x>Y-cr<}v*8h4rzq{|#Wg)$=1fm;;;#h8PUc&900?K?Nb z+TASRuR+7p8pZ9zX{|iR5-WPScwges=AAuV)92LU@5KJzyZsr2QtwuWZj4{jk00tV zdshot|LF|P-p-!(S<&oMB*PS}bqwM;Tbfwkegrd*H{WTw z|Jyh4EWD=dHfBCRTw?04;+jWEIe~o%A}L%|U=15<47XTz_zm8}hx^R!t zF0!A|TO2Ty`B;YWW`PleK|91VKJ-j=BkIW^7Ii!Bn^`6O9>-8?a%hH!k~>!#iePIB z=@?$qEW-F9)1c>OYaE(5#QRm7KF`@{M1xy)c zLxl6ifd`bkQk`ie?SDHYCE3~tx-o&FCK|~srzweSF6*}=CXQRXhogOTZT9Z!WDFlU z5`^934x;!;7=(Dhk`QhwIG`3D^2^qWAjC@vJ|xSdR|wnu1)&kdgAU+=J~)X5UTVQY z3fM>@013gbbUG$R;OBtEi4$8WUl;ljPgj!4_KZxKH1iUKG2d~3~1_?vi9{)<78H4cD!~@OADG#%b z=Ojh(5g<=G46b7=8$bkdjEOxtm=YY}k)R@Y0wl&~$+j|~6$dOGt_M6ECOzp0nv3zl z9zo_e|Ayju33=c2SELd#Y=O_Xb;=z*wgh*K>vry;^Z>4j`G{V9JXP$EiFYW_lM{_t zsoJPe=OEFZm1DO5=nnu}SS2SR z#6d>?z$TuAfTIs_!v*02R;oKfJQ^nE9W6}YVd7<(=V_G9>Usws;@t{q!)jg{D zY_}R4%_JV=v;v=mupr{WYQY771go%4i7D<8A|HR^AxnXGY03*Mm{m&jY!*bSlF7WY zOC5-N|AmDy$y;L5oVdb6Qv4Q)>%YAH07rO8nS!|c02MCElDI}D@R8)W^NC%V$(t~M z^N-PUiNV$2DK9yiBs}b&viACII#+N6MHX-fw{?=XOG_f;dHF18j|1@#M{tyiP$Vfw z*sC^46B9(M|GdZ7u->f0AXY(wck4455%_X(Fjf*na0 z+~tCQ0~G;0L1$vC^~Bofu!T1^rDOOQ2fmPoG-`5|Q)okrlsV-^brOe}sgo^^SA)x_ z)YS{M-|atMnZQqpR3ljAvO)Nb;XiObhZqzCaAIschiN{q^69yEA9?G3S4sw*-aEFP zb)~;|E0SL0So`j)^s%J`{`YpBX8`#)c(*V>+YBLy78bHGGnC6qm_RQT!@ellc&lyw zMBCP)N^qzmu+1v0;dW!D#2(uo9^Sqqs(oild&HUcT}AD?@3rq~Xy4n`zE9D>W zzJssZ5oz9W(6-}{XUE}yj;QdC=%|h(DIGCqI*t}~9J|+XyrCnut>c8EBW|K29xq39 zM9GCI^3*eOOM4JD%Nl z1G?{pcUMJq-%shTKGXf6sQcl)?ne#XHErFG72QuJx}V~Eq`Ez|<~?<`J@uYF&jNZH z!h0H{dYV#tn$Pq+FY0Nz*Yl#Gr?su;rK0E6M9*t{uS~c1jd|}|+unDcz3&5h+roR> zqk211dgW(&JBxa|?)7#z^!Bv%_9}WceG|R?_&!v(Z@|27(6(>Lvu`+{PZ8cX64f`F z(x*JrH&)d5;a=azhQ3d2eV-M5Uncs#;`>#){ol;{$8Gz+d-neb=${Dh{~6W)E2Uq3 zrvGaMQKA4P<)P$alv0IK z8&O(2N*_VtpD2Scz|fR#6(Up!z?H87)bz_5K_ z=E#82&jDk?AX{(H#A49YZqUqYa8}@;`Hn%0=)u{7LCd_sImLr>s|M#a4$f~Mv>F+- z{yDgSFvQUtvauLiXg8!;BBRZzR-W zB+PDPo7c$pz>)ABBRir;b_zx!@&HXl(oFiILH`pQG^vC8DQHuuvx2DU-aE z$$`q09ZEs8QYcU^OwCiK6)V%Llo^f6%y#9;5oOj-Wj0|i6n@6h0$;=p^D69>Y5(SX*L05&A=K!2LQQT z{_WehuV23&A0Hnb9UUGX9vmF(@9*#J?S1+3Wp{UXXJc(i^bx(xw(%YKYsY|VRm-* z{rmSbGc(iE(^FGZlarHg-@cugm>3@)fAi+e*x1_;{r&xYeSN*Xy?j2O$K!FiTn>lR)6>)4-QCsI)!Etk>eZ``j*j;B_O`aR z*4EaRmX?<4v60PYKY#xG*|TR24Gs16^>uZ1PoF-mt*x!8sj056 zuBxi4tgNi4s3~2EGQ_*&(F`x%gfEp&B@7m z{P=Npc6L@)7L&4}MnG#ZUcr6wdK zP$-o6_;@mz{P5w!xVX63*w_aT9^AiwKPDz7IyyQkD(ddtyOEKR5fKr0?%W9v4-X3q zyM6n1XlQ6iNJwB{pufLA@c;c!4Ve8!`|ArNv>X7@I!*zVTuMB7t%UYLYSunhYXvT(m@8zsR`rKEsPF^Fxf-w;#%niE;nM0LSxU;Lzl zTlB3`u~K9pe0V%Q!+_)gKu{B#4}d~13C~zmXm$%h-KO|4pFrkPpkQ2(SYSYlJ5ILz znUZ@Z6i2(aV5&;jyNul?BG4+j#+W7i!OayVb(^ce=6)7J5&45A;FGbMM!6p~&0 zYKdJY5xQxmlyAiNS^NC7_o)s^O$niZ=#92467!TzCRp~0*DgX_^)os?JcxiVg`@P6 zI0-7cVRDka8r%bgcH$c^$ zJPL!*&35Wa_2gdUd6oqy^S2;ZCa8qTjz`1IS+H!38k?7LFDFsopIMo=DQQ_{|woE>v5}L zchW0*b9V}bjWV+J{dI#mqf%OI)EA&%;GJoL z;N{Jx;lhYxLOspMXGpz>*=-m)4iD>7$C_HAwEsnRLt!(7r2>eK28H^u?w}*g7m^~i zWBtMbjXx05KCSzs@pL4rIo803s_I}5UkHc(O*!*%VCkL7^^Vm{$MhOs=27ZcsWiIW zI>aGX?u^wUF%-=3TxIM3cGo+KGVbIkWAL`${lcQ1Gy_prgrKG;Ug1X#lJePUE;g8< zpdVlh;v{xZwnYL#f>+jUBk6815>Del#j_H!%25R#d4Vd1-Pi~8SrFwkCtd}^zCp`$ z0Kczb!Tx3eVnYG4Cd(UUvTq9-TOhDoB)A=(3ptWN2wkcG?SkqE<=Ik{bSG(J>k>MT3k zfI)619crTV9RrO@Y%n{m((IP=fag1DPTOGR57DB5-w&m^988r3-Ffh)wk%KRQe~Md z8uULe%O6dvI$P~L6yzx@m>#UMY84HI#>fiAm};WHdH7C&tVrTgeSS(b9MvH!-b$;! QxavF-^DZk01c3|x0p6`h!~g&Q literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..d884af1b2b690e5f0c1dec2116b0d644713f0acd GIT binary patch literal 480 zcmZ?wbh9u|v|;dLXk}pd|NsBLfB*je{rl(7pWnZK|N8ao=g*%%e*F0U{rl(7pFe&2 z^zq}z*RNl{diCn%%a_leKY#Y@+0&;_pFDZ;;K76Y_wV1md-u+rJGXD&zIE%?&6_u` zU%!6s+O?}!uU@`<`ND+@=g*%%ckbMoGiOenI(72o$>Yb5A3b{X$dMz54<9~s=+MD~ z2lwvXyJydy-Me@1+O=!v&Ye4U?AX42`_`>nH*DCjdi81sB7hD^4ahGJ9RC>@Ib=LG zEI8QAA*>bSp>T{_LNRWM!@)zWZ9>Lj6%`K~T|0#o0=86qbaLww(zDyr5Xk7z&}xu; zYL4gTWoKtw6u-K2a`W=@^BtPGWWBbmxVYG3vR3S=Eh{fC4_NFq*K6ylt4%C!a}Fdd za&8w?a48TdJk-P?EbY{d0SFe}Dhr Oa5t;G|GhK^25SIRxcp84 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..02bd6e1ab78d0c1bee2fa035727c5c2fcd47f748 GIT binary patch literal 33191 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1.position.json b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1.position.json new file mode 100644 index 00000000..312cb5d8 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1.position.json @@ -0,0 +1 @@ +[{"text": "Mixed", "x1": 0.11764705882352941, "x2": 0.17429901960784314, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "document,", "x1": 0.18020424836601306, "x2": 0.27938235294117647, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.2852875816993464, "x2": 0.33252941176470585, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "one", "x1": 0.3384346405228758, "x2": 0.37386601307189543, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "has", "x1": 0.3797712418300654, "x2": 0.4140130718954249, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "an", "x1": 0.4199183006535948, "x2": 0.44353921568627463, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "embedded", "x1": 0.44944444444444454, "x2": 0.5498120915032682, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.555717320261438, "x2": 0.5899591503267975, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "layer.", "x1": 0.5958643790849674, "x2": 0.6478006535947713, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "Only", "x1": 0.11764705882352941, "x2": 0.1613202614379085, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.16722549019607844, "x2": 0.1967516339869281, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "second", "x1": 0.20265686274509806, "x2": 0.27114052287581697, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.2770457516339869, "x2": 0.3242875816993464, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "goes", "x1": 0.3301928104575163, "x2": 0.3762450980392157, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "through", "x1": 0.38215032679738564, "x2": 0.4541813725490197, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "OCR.", "x1": 0.4600866013071897, "x2": 0.5131911764705883, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1.txt b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p1.txt new file mode 100644 index 0000000000000000000000000000000000000000..55b702d3374dc43e882a63351276c6f5b38aa659 GIT binary patch literal 92 zcmXBL!3lsc5JXYWRxt&LO?Z}o9Yl9Xgk)Dtgrs`~ub=nVvr!;+JegW2Ts{z{MDzt- l!Ms!CBbBWp`ObSDou-Z&iNeEF{wWyC7jJt)gj=?Gcmej9AT9s^ literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-large.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..59e852d485983240ea6bb21d3cd7ec0b04a7a9da GIT binary patch literal 20785 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 z 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-normal.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..a97e730d762c5c8004f9ed7ade1a7dc20ed17b19 GIT binary patch literal 13509 zcmXAwdpy(M|G?k7&o@69ca_URC8Z|0bkkgu#OAh9m`f6>iQJ;*5+l`I za_MF+MY_#h(}b)>dMN>^78V}pFfwDmVW&BvADSS-+%ut zEG&Hg{{7pxZ(qNDou8kdo12@Rot>GPnVz1WnwpxNoSc}L5C{ZczI^%o`SYhwpFV#4 z_~FBc@$vEZ@86G&jg5|uzI*rX?c28_BO}AZ!$U(ugM)*7K7U|f;LV#iuV24@_3G8j zmoHzuc+ubA-`CgI+uPgI)ARiK^X~5MuCA`m&d!dG4jzy9?Af!YPoF+{@}#}J{qf_+ zZEbC>t*u-xx22_}xw-k#qeo3mO^uC>4Gj(T_4OPM=i$SL4<0572Ujf zv#_x6#*G^V1qIiyU(e6a&&$ip&CSip$zicr+1c4ySy`Exnb)peyL$C%Mn*<@dODNI zWH1^5x5MadDR}U5bs3y?F6r zOiWC4baYfyRAgjiL_|b*csP|xy>Q_|SXkKk^XJcGpin3$PMkP?{J6ir|FL7ojvhVg=jV6i$Pr&(-@}IwA3AjC z;K74FK0e;w-d4@U0q#WTwI);ot>PV z9334U931TJ?d|OBNF_~R8*9e zm6eo~2n2$nqN0L=!meGrA2{PwZGv2x%JDH*kEUsKg!nQNZ5|BI&T;YxDZzFYeq)x5p$ z+j!>Fi%0iIA5yw9cI|Jjecu>5T;u<;x$Z*?b?U{f{VfkZJ&s-Z_UUEI!!OTh5VV3D zmow4Dl+Zc;%IrJ<0$HK(K!ibOum5hvk&oQQNf1yZ_-pDqU>j!$kQJnF4m}Iq`(`WI zNv82`qHw87!BqzJG+`wknV($zJ_X2uIjjE~_#y?cWs+_uSzeDwX1h$xHp(f@8*=wV z3r(3Q(_QoJAZCX(ipB^NPQR7*ya}^PoZokCkL!`W+;Fxu=O|=gv&#eh*B|PK|FfBl z4(%6(`pIu^dcOqv4$RU`h3p7Wd_MsIA^=w&ChPz}27qWm&s7jh$x#M5x$c0&&tIxg zp|I0`52&bM*;j2}>f+yvZ!Q?7lJ+zi9zCD`so+CGzSIFv+aJ?Q$goyTyvkXCICl&f z+->9^Jt`%61U|Fb<&F^9hXi7Uj(7Ptzz3Y6w!+n}fjhLtVNYA(spO6@cnQ-};*>#C zkL@Obu0V%3({4JWP1XfW1U(oYRtPLXtc3&v

aG+0#-7;JmP1*A;?x1sS)m;EZt8 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 kcO~lPoebLsvl5KTRd#>f>)kd~@YJZnuAPoSgjg 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 On*wuL^leXf5c&@(?Ryab literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-2page/expected/pages/mixed-2page-p2-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..cec9aa23977650d6559871d610e1db5afb76f959 GIT binary patch literal 52146 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

HZOirLfm%yf`vBfO82rHuQKg{LYDAw>a*9XL@o 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.pdf b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..929b807137a75377ded44e6dcae5e20eccc0ae28 GIT binary patch literal 1519 zcmbtUYe*DP6y91kak2;($ui=G7$Ma>?#%2AZGw(2MK4(`3k#Z^xvLY~OwEj;^`nPu zQ5G0M^pKDuBP@DCCQ%VuQ3Mgu>qpT8EP6o%K~Qw>kOMdzi2}N|WgP;vqPl9rY5-+r6f$+Pko-;o z6syT}F@RoR=nkj{(1Y^cdsQmM@2u$rWKlYS=_1o5SiwVyDeNMo8)}8sjQ=qB7FiC2 zWDel0)vAplDVkB_SWUKud51hG9kpE5MfiKL15$n%eM0UJ)g=!sdv9DLqq-mqfajS1 zuTGjwRgV}67ukT0BrxAfq**%Fdm%C#+(sZtgtFt>NL@=ccf2lrV^c4=TEL>p^WDFC=E=mjQ_r`Q=WXks zero6XiLGPWUYxNXY%S{YMZPn=oh>g4Zw5Z@9cVpOSa7L)(Tb|ueQoW%`!_FMc6#~7 zfl~R?x$9HT-WWS=Y5tFFc4UKx*jd;D#Iubku>r8eB2mm~*hZ5b9a{Z2sl^e!WJ;}R z{%om(idIwXzo0|qLM;qB8q}cT_+e*ZJI}+M^U;qnYg9l(bd`aWxuu ze6Fn;34F$hQKOdS0y1s!Y^^aiBHTNm=U0OIuo%-g88MOuV{r|t9M3Y01||HcGSoF# w7DgPSvrvazOp|0ySEZQBN^vC1DukRElFL^8_ONQZp0F${NK{El)shJH3#l*BJpcdz literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.txt b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.txt new file mode 100644 index 0000000000000000000000000000000000000000..16a086b073e36892776f77aaeca9fe2dfc7a2145 GIT binary patch literal 78 zcmeZCEh$MYQYg->N=;EHNK8-F<1#ZeQb?*)Ft;>PD9F#uD=F4v;No&LRme%qODRrH TEJ%f_Gqp4YsWUM$fU5%ly?7UI literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.txt.json b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.txt.json new file mode 100644 index 00000000..8f6ef5fe --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/mixed-sizes-2page.txt.json @@ -0,0 +1 @@ +{"updated": 1783974767263, "pages": [{"page": 0, "contents": "Letter sized page.\n612 by 792 points.\u0000", "ocr": null, "lang": "eng", "updated": 1783974767263}, {"page": 1, "contents": "A5 landscape page.\n595 by 420 points.\u0000", "ocr": null, "lang": "eng", "updated": 1783974767263}]} \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-large.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..64c1a653801e158de92d9cc800b2144cbb606ea2 GIT binary patch literal 8473 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%0A5A;GtZyJv?q# zvf^;$O%88COiUFUBUw>}q}bQa_;(*QTWvvDF2MhK2xG*>;nHqH@K2Iqo13p6%B8u@ zRTXjk;4+RDBw~!q?!}zfLaZedfo8Std1)i@bElDsK;L{kg!m7Ti`87cc(#m za4)*=(>tnmm$cI4&_~Me;uo)%9CtfkP?|RlT zw}BY3O`U;A4Kw;^)Kz{rjnm>|%oz3dtAYV_r=`}Jv3f`s zT(pKEL1Zw_#Lz|PX`SIAwZVthQ7-%PG>jB&2jlJ9T|}zujFbZh|Gk2A73&O~>8Few~)4Uf_^H4qs}jy1eS5Uw{h zRvSu5in=CuP}9uZcIa_>`?W(S>&>hJhf-f5-4u*8&CjI`Jt;7BQ?#i!x2+j^S{CJ| zi2qIBTQbLwBv- z`u_UxD=zXn5v4_n6d9pljIJ99(?~IDBd?+8>xKul&c@r0WQ%rOH$F)_n;1BfBaOOY zYNU1UaoR|(ywMGF8``o|a9K?P!r*ho@~d&89SP^z9YYP5TZl+lsW&Vh^L64x=>N znwrs)+tD|j=C$l-W22=(9XBtp(d?SmN6W%dUd||O`&N-LYOIl$i!j~3Q*ErAn-uMJ z?V$F>UfZ#X^bRlglk|)Ifn$}gP`9odX*&$1ja3yG-SV`dJB-zgRhLEI@^aI5oEjUe zsqMJs9YA;dus&AXjPmx0)^?f`8L#Uy^7ea5clxR}UOy1+eJ4-*(hu8l+IWX|U^V^H z@4#{TN7U`$4(-d!Y2yvwjBbaF(l4*qj5q#?z8yBNePwHGylJE3_Wd>bmEHC6W-iKy zjM8z2i%u{w#y*k44bEuwi54ivC+eWiRjl1at7xZB%*lqUfL5a8nMNe0K%y|ExpDT{V5O&%@Y1W3<6tt#jt7z%vj?)*}{$2jn$_HlVa}V9z1o!+-_

bvtBy`ol(NP}5rD?fVjp0QJ?t)#Rj(@)b)+Go0${s3hq4Fk@4DL`(Bz-BG4o9i6T*zvy^}3EyI^7xGW4|RPQLo=ck9@Y zkv!diBD>iic3mN3)lC7VL9>fjFrgD2x`7qxvp+pdLZ?QX0&8k#f8CA^otf7SqK(h~ z4(ba1u+|jRv@!c9923Su=>@lneqhI%gv|*z2Y0G}SW1cw`*Kk4Zm->k<@BzwuP2-D x_6L1fd4;*RV5Ao^l>TA0z~tT!o92+Q+7D}GvG;zu>4i>>e^{^GxJm>-`+q|CkiP%` literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-normal.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9f76ad5a89ae936bb6f06b886567429c1f572da GIT binary patch literal 5209 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-small.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..115b158e91adedbd6c66ccf9c68851dc260f2e32 GIT binary patch literal 1133 zcmbu6=}+1R06>2Th)1n>%rfJY#%|V?E~H)8E^StvR@ro|TeV#lQ*~{sRGZmkaT_4@7Y?X9gXoldv8xw)~i zq19?N8jV`5R;g4RX zWb*6Rud}nWv$C=>Gcz+XGSbu2)6&vNBvNW>DhPr^A~7i`DKRlIK0ZDsCIclJjEs1MugC+P?%jAm5%=Guk0)<>kma%_M=Hw^#h zG{lJK^H^F#Dk;$6nwJgoo}{y7i4&)kybI*CuJk0BHddsZHpKu4wRI2bV*EXn<#grA zXctpCOz{k?2FRM|*muwDQ3~f0PoMXbZ#<>rYRPKiUib-SoyhXzwLs_}E^a$6CN4tT>X59|-y) zuF2xS3s-m)U;F6MU?{@j+y@H0Jq6^!?Ybg(P`h)5pp6F@%tv@&IJ{)|JVyp`EQv-! zzj7g{sQ6DBRQW+)XjKKl{@&`skVgddA3r{CP#1;8Yt_XO8QyCp&x#0ZrO~wwYh|&W z+O@ZFB5zIkuX6;=yM(m{O$BjR>s2uJacD3t;E{}ugSnY;K2FFN3jFu@h;&pa=AsA{ zu1E8nBQK?-IYt#m`Z=A)G6gP#Fe=IQsUQLXAD*8=7vdagdey63S9v%fu=Z9YhvHJc zc5%SGvatS1j2yH=092vF4<%S3tZD3)rr9)pXHRFEz#*=hWquc4 fnkVsIE#|49oBx=ng9EPa%!E9C$&Q9VfZP894!=mI literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p1-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..54ceb59ace64252a4edd7b4bbe955b733aa1b16b GIT binary patch literal 399 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-large.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..9278274cf193e0e1d7d4c55e609df61be43db015 GIT binary patch literal 8247 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-normal.gif b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..09c76ed9f76c083a50dcfffeb17ba0d42ff4d7ba GIT binary patch literal 5203 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�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 aQ5PpeolJ4I)Y%pnM_pX;hwpD55B>v8{3o#h literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2.position.json b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2.position.json new file mode 100644 index 00000000..d3345564 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2.position.json @@ -0,0 +1 @@ +[{"text": "A5", "x1": 0.12100840336134454, "x2": 0.1477294117647059, "y1": 0.18974047619047613, "y2": 0.22069285714285708, "upright": true, "direction": "ltr"}, {"text": "landscape", "x1": 0.15380336134453781, "x2": 0.25338991596638655, "y1": 0.18974047619047613, "y2": 0.22069285714285708, "upright": true, "direction": "ltr"}, {"text": "page.", "x1": 0.2594638655462185, "x2": 0.3141294117647059, "y1": 0.18974047619047613, "y2": 0.22069285714285708, "upright": true, "direction": "ltr"}, {"text": "595", "x1": 0.12100840336134454, "x2": 0.15745210084033612, "y1": 0.2454547619047618, "y2": 0.27640714285714274, "upright": true, "direction": "ltr"}, {"text": "by", "x1": 0.16352605042016807, "x2": 0.1865983193277311, "y1": 0.2454547619047618, "y2": 0.27640714285714274, "upright": true, "direction": "ltr"}, {"text": "420", "x1": 0.19267226890756303, "x2": 0.22911596638655465, "y1": 0.2454547619047618, "y2": 0.27640714285714274, "upright": true, "direction": "ltr"}, {"text": "points.", "x1": 0.23518991596638653, "x2": 0.2995563025210084, "y1": 0.2454547619047618, "y2": 0.27640714285714274, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2.txt b/documentcloud/documents/processing/tests/spec/documents/mixed-sizes-2page/expected/pages/mixed-sizes-2page-p2.txt new file mode 100644 index 0000000000000000000000000000000000000000..1d4651b035d6eee695bd1b55efcfe86c2868a77f GIT binary patch literal 38 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 PIt?!O861YgfzAH_g2O!Y literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-normal.gif b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..86619e400dd179ea333bb8f6499873f76ccecb6a GIT binary patch literal 9497 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 Kd@&jg?D!kCb`2x| literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p1-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ae4778a827b9854317d0623f5016c3c84957af3 GIT binary patch literal 460 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 z z7zMye0SZw-3KS}R3fPVU@uon-DKI<*o<*T9r_i)fXoo3ua}@e53d13V5j=ok9bgg~ zU{)Al(H~&78@S>ckcnHHfBr7x|r!XY1Kcrwc zbgAe)q!d1+j2}|T8oF9Oq}n#5Haw(0H>9yOqLB9o7*V)>RnR(;wEi8#eGB zHVhv&!Veo~4V#n?o3;&`4G){o4O?stTOJNufk&)aN3IEt*eHzH>W|pjjo5pSIE0Tl z;zyjaMy{8SIJb?s43D_Zjks-%xF3$(0FQdGj@}d+^;8)3(jWD<8@=T{>JvWdiy!sN z8uc$94QLy^Jv|3*-bq4p2!ZL$iYwKW|?4I5`O!^ZdVfu z=1fAXpJjR^tB|W35edSjV(r=hMH~U73a?}msPaz(?8SQ=RJW^4miMNXY;i&3O>2gQ znms2`T#p(GOka_S31JTb#^BWn>Ra_D*STomr%6|$6Pqdj!G?#xNq9wlngFH9%#^mb zKDSQDRL=>~Ct2CJB{g(t*3wH%D=zNPHfwhs?PyD8WKIPjsq)Fmr10%;^-w3;!=^gl}muRX>(*hciADPVt)-)c5{_Bo>Qp7U`#egFyICA*ra#wP;&H%G?R*QOIDP{VfPGaF_}U9jn20B6t59iM6Fy`mn<7R2 z^SOH3RO$%Aw*n|Lf*L418;!9B+goS)S*QEWoTSZMhUU(kxz0w9Tj4jXF2UB-l>F!e zLR57!769ft0PvH*-6hFZ091NZ!onOupP0Zi3lztKu^4JUbX6i6r?+PkiB1v+fRt1S zQUb8K3EtEL^Gx{E8_B76=2PWPZ~h<0DR@)iZ?5pv>a5M`e9j7w1O?Y7-$5oRBNBh@ zO+>-L<=wB5pjU|qP$vrR(?x}x1!x1!7mJWUfhp5?-FP8f!u^{m>~L7y1o+c6V1F~ry?CL>FTsM6 zD0<3AnR~UbPo&2Y2slFaEowPZNi+#h40s)_lJuz@E?xaBY8+Hh14dz%j2&1SGp|##m;pj&W~rE+dezX$U2upQY(U% ze>5*d18n}&mRAaIw__niZh59>ZzfBK07@cV3asmvODDbSW73LX?aGuvKKUPY%hQzB z3S!%bl`;?h{#(?S3{ixq?ZN;K9K!)n(%3cC8sO|l^nel|yWP zYz`&u=^#QBGGsF%Y!w@SQVjMARy0$&AYOOa@*(YHQa*Ard8OyZ+viRRMi6As9wi4i zEEqhTzVA3)_&hiDP`$`Bl>Q_?>SN;Lg(rE?T%<$^6Y(G%UA1!zM@^aEjBJ8GFeO9Yog0ryI9I3Xn{dxmY(jJkzBp^{%QJxIc)l2O%BzX%0Ar9~ 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Ⓢ~37;G|n7 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 RyW9SoXq$;(PyxX7{{WD$oml_? literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-normal.gif b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcf1fdb7ee9f02cb84c1413ca8d3fde3fb1d730c GIT binary patch literal 5614 zcmZvgdpy(oqxfXi4suxzA;qyCjzD$mRF_{{MUZ`TG0ye7s(d*I|2G%0Aa(SQI=QfYsI2m6es{ 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..9db7e5abfe8807a383896f91ac90a6175bd43ae1 GIT binary patch literal 25820 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.position.json b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.position.json new file mode 100644 index 00000000..a812d0a5 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.position.json @@ -0,0 +1 @@ +[{"text": "Page", "x1": 0.12000000000000001, "x2": 0.1657137777777778, "y1": 0.08998486945884171, "y2": 0.11466589404328836, "upright": true, "direction": "ltr"}, {"text": "two", "x1": 0.1742861111111111, "x2": 0.20571465277777776, "y1": 0.08998486945884171, "y2": 0.11466589404328836, "upright": true, "direction": "ltr"}, {"text": "before", "x1": 0.21285694444444445, "x2": 0.2714283611111111, "y1": 0.08998486945884171, "y2": 0.11466589404328836, "upright": true, "direction": "ltr"}, {"text": "redaction.", "x1": 0.28, "x2": 0.37000027777777783, "y1": 0.08998486945884171, "y2": 0.11466589404328836, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.txt b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.txt new file mode 100644 index 00000000..2accd433 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/pages/redact-2page-p2.txt @@ -0,0 +1,2 @@ +Page two before redaction. + \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.index b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.index new file mode 100644 index 0000000000000000000000000000000000000000..ac3f89de2767095d6d6126349c3fb63fe2fa6880 GIT binary patch literal 1075 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.txt.json b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.txt.json new file mode 100644 index 00000000..3f05f289 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/redact-2page/expected/redact-2page.txt.json @@ -0,0 +1 @@ +{"updated": 1783974770034, "pages": [{"page": 0, "contents": "Redaction test document, page one is untouched.\nOnly page two receives a redaction.\u0000", "ocr": null, "lang": "eng", "updated": 1783974768941}, {"page": 1, "contents": "Page two before redaction.\n\f", "ocr": "tess4", "lang": "eng", "updated": 1783974770034}]} \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/redact-2page/input/redact-2page.pdf b/documentcloud/documents/processing/tests/spec/documents/redact-2page/input/redact-2page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..220e0a5cf378ba1a415b339c1b4ae001dc07df50 GIT binary patch literal 1733 zcmY!laBVf>eFy#FE6E{B-?*#Prl+1tXwr zkewY@YF-LR5f_M$tQxFJ-#NcDuSCH}-#asiN&d4 zVGp32Q%f?F6ZKv5lJiqC^V0RhGxHqtiZfw+B%grngBt9UnwMUZpqY zErzN(td zmAX{3!qTyJ^5^uL|FgP(U3tFMk7v(KT|>p@jEh>Gl9?GA5B(Nwj1V{;)vUYbMaTZ$ zr%%gw?zBl^cbp(~35$zC2@W|HK`E0u$;J|Ba*%={DCGeuP<}y4J|Jn-pt3X}5K^*T z8@U<`cv!#Jxc)m}k{d5@#Ic}IcvEL`cQc<}-Tu(LU5{TZJE^(BglYDs&Q0-GWS`bp zxO_WxdjczC+nS`4JfW;zJPT(1`?~qcybMlTt*&W>-&@m`PmObbDdvkMXuwWKb)unx zAwf490^KOU^1J%zUWek7^Ews8ntJCJ%#G+wTG-nA-h5*2w3!Rr*_0EftIOD$8;0`U z_WimuUf(;xy5gmYgWwfs(R+!`-LkLdGI4&|95JWuOcAR?QU9l3SJk9?(|$3?EEb=K z&8bMm5iHLb5Dd-^L#|c_9@gJ;l+**vv+wOv*e{UtrlllFRa-3TMn&D@=Lh#BzF2lp zqu??3oR)=AoVQ)S2A*qoPPtwAQuKtTlJf?~rG;rz&QJQa{esFn-Cgyrq03yn1WHofT;t+USQFM zU1LrcTaA7G^-w z*wVnr)zA>cx3jS{a&|Iwb2N4_cD8V~Fg0*=H85~9b~Sc$HaBuKax}FAmD0r}iA5#g RfHpKXHRDoMb@g}S0su3 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/case.json b/documentcloud/documents/processing/tests/spec/documents/scan-2page/case.json new file mode 100644 index 00000000..face967e --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/case.json @@ -0,0 +1,7 @@ +{ + "doc_id": -9103, + "slug": "scan-2page", + "why": "Image-only (scanned) document. Every page goes through Tesseract OCR: text, grafted PDF layer, and positions come from OCR.", + "settings": {"ocr_engine": "tess4", "force_ocr": false, "ocr_code": "eng"}, + "needs_ocr": true +} diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/metadata.json b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/metadata.json new file mode 100644 index 00000000..29a1775d --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/metadata.json @@ -0,0 +1,33 @@ +{ + "callbacks": [ + { + "json": { + "page_count": 2 + }, + "method": "patch", + "url": "documents/-9103/" + }, + { + "json": { + "file_hash": "e2f2abf28789abe84804fe3e1acb9d7ffe36d727", + "page_spec": "612.00x792.00:0-1" + }, + "method": "patch", + "url": "documents/-9103/" + }, + { + "json": { + "status": "success" + }, + "method": "patch", + "url": "documents/-9103/" + } + ], + "database": { + "file_hash": "e2f2abf28789abe84804fe3e1acb9d7ffe36d727", + "page_count": 2, + "page_spec": "612.00x792.00:0-1", + "status": "success" + }, + "errors": [] +} diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-large.gif b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..0589e94302278ba88127cc7625c1d7ccb481225b GIT binary patch literal 20114 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


cwG)i!L!pjj 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 F06UQp-4_4= literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-normal.gif b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d7a46110b8b8ecf7e0a82b3562047ef7fa78040 GIT binary patch literal 12980 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f92b4d09752780939f19f3aa2a19bb83415a90b GIT binary patch literal 48648 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�^O~x&cD32pRv{N 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.position.json b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.position.json new file mode 100644 index 00000000..fb81a21e --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.position.json @@ -0,0 +1 @@ +[{"text": "SCANNED", "x1": 0.12000000000000001, "x2": 0.3385709166666667, "y1": 0.116791681421627, "y2": 0.1522035862601809, "upright": true, "direction": "ltr"}, {"text": "PAGE", "x1": 0.3571430555555556, "x2": 0.4785720555555556, "y1": 0.116791681421627, "y2": 0.1522035862601809, "upright": true, "direction": "ltr"}, {"text": "ONE", "x1": 0.49571388888888895, "x2": 0.589999013888889, "y1": 0.116791681421627, "y2": 0.1522035862601809, "upright": true, "direction": "ltr"}, {"text": "NO", "x1": 0.12142777777777786, "x2": 0.18428452777777787, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}, {"text": "TEXT", "x1": 0.1999986111111112, "x2": 0.31571311111111117, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}, {"text": "LAYER", "x1": 0.3314277777777778, "x2": 0.47571340277777785, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}, {"text": "HERE", "x1": 0.49571388888888895, "x2": 0.6171428888888889, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.txt b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.txt new file mode 100644 index 00000000..b4bf200f --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p1.txt @@ -0,0 +1,3 @@ +SCANNED PAGE ONE +NO TEXT LAYER HERE + \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-large.gif b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..135f720b1daf12e2529f7f7649e6465db8170de9 GIT binary patch literal 21465 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 Ce`(SH literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-small.gif b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..a6108e5dbdde39b363c80110c3f866b89a10e39a GIT binary patch literal 2815 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..445c8845191d01f8cb5866b48c013bf9bb30dfff GIT binary patch literal 815 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.position.json b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.position.json new file mode 100644 index 00000000..81362727 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.position.json @@ -0,0 +1 @@ +[{"text": "SCANNED", "x1": 0.12000000000000001, "x2": 0.3385709166666667, "y1": 0.116791681421627, "y2": 0.1522035862601809, "upright": true, "direction": "ltr"}, {"text": "PAGE", "x1": 0.3571430555555556, "x2": 0.4785720555555556, "y1": 0.116791681421627, "y2": 0.1522035862601809, "upright": true, "direction": "ltr"}, {"text": "TWO", "x1": 0.49428611111111115, "x2": 0.5985716111111111, "y1": 0.116791681421627, "y2": 0.1522035862601809, "upright": true, "direction": "ltr"}, {"text": "EVERY", "x1": 0.12142916666666671, "x2": 0.27143020833333337, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}, {"text": "PAGE", "x1": 0.29000000000000004, "x2": 0.41000083333333337, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}, {"text": "IS", "x1": 0.43000000000000005, "x2": 0.46714241666666667, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}, {"text": "OCRD", "x1": 0.4828569444444445, "x2": 0.6128567777777779, "y1": 0.18853512753651178, "y2": 0.2239470323750657, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.txt b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.txt new file mode 100644 index 00000000..be10f756 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/pages/scan-2page-p2.txt @@ -0,0 +1,3 @@ +SCANNED PAGE TWO +EVERY PAGE IS OCRD + \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.index b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.index new file mode 100644 index 0000000000000000000000000000000000000000..84611b239ab337f303a236822e6d91274dc8e551 GIT binary patch literal 968 zcmV;(12_C1iwFR6OI2zD|7&2G>LtJc2DMW(ycxV%+NL5tj zz+k9n&ZT;2>!EF2T!sn;3i(M{TsAiPA(aKG`p$_Zi8=Y{`T>dQsl^ILK-nNWJFe8c z6p$h=BQ(`uRr=2PrFkU^M*7~FDaFwyAT0_OATkz7r!hijgnv?2YH|sXl~(1Mn{J?B z3b6%AwFwq`^nFuPG83KhE20g6vSx-x3g(tZvHC&zC5a`e3I_T?sm1xFMae){gX{_d z>M2SEISb5j&d)0W@`|I)&>d!qW);+R`oX11B_O_MF34_|)a3k>RG^W$#Wpr}cKYF& zDJ2;ShDPS5`W~s7=@}&ohGwP)`c9c8#Q~{B&iT0o`FSAQEr2%XJm&;Fm; z+{GfNBF|Zx6!op_KkV+cIMJlCN6js5h2vujVNL!g20fow96V$2l#VHF z98W`dxjJ9$slR^xU+uT#v!(Zczq4Djw|t7P(k4V|7}TJFb=!6(2~cc7Lj)FY6-B9O zTm}k;23!VkpkQWdYHX^IrT`Z+1jaX5CJ!NIW`rSTXk>sXW`?QP$lMrB%*epf#1vi3 z(7@CHQ_Ru~L(Iqk$vm!-qQuOc)FMz)49=`d1^Nw`y7Pfa3!H>KU7~HAjU0jL%-q!3 z*wMt<$kGhRH+MF+Ff=d#@(i7g?QASuP0S3OES${^EKE#H44hmHT%0W2oQ>Q}oXi|e z4V>*_!HFxes018W3DGIu0!Y=%Xq__h>Xf^`fBx~Vj(=Snn?1!hBM6ZiEGPGy>W{5zC28FRX zfpB=N^~A{7B*=ilso0xi?wr$0=Z8I=IXiE`gGuK_Pp~r79bsROrL{Pk>;`4Bo8rq9 q?krFsCGU9O*15C8yFH`Kxa literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.pdf b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4ba3f27333d559325d1d686e1fb5ad213a56191f GIT binary patch literal 49305 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 z zXI=Q|-`veJ4+a_SWU72qm%ioVjvfAsD}ov)9)uZ&aIcN*vya?;lkX(|@F}X-y?fL` zx3+n1>m4Mus@mS#Nt^X-N3rJ6$IVZ~cgwf=C$6|k3SQ9dR|sC46RTr$d-SU&$1r8k zfoAQE+hcl49n8^J8eRub|30%{e$|X#z){x7t&6HNvnmJEPbRWlWVu!7Rn#c#BBZOT zxxA`8}~wiQn=G{@hd+F07)zcH_ScJt21W&v&2s z^((A3b}qK#&uvfaW!1BG*u?*F+K#)PwY4&lvA3`_!z=lNB=9GBQ^m-_#c(lQLBrv zNuW@**J9;+HLA%E4KCb`a$!4kF8$bfxK!?_weh+O6|b~eJ!m&anNh8Fi#QQ+=_}Xa z^xL8OnlH+zRtD`ne1)CskVNR^H8s6dd)l1odDd+^vF*fV&yB2xZ2W>^GmSRc`iGZR zv-TFVQl9!=-m;b{!u0SYE8|*+2+h5l>l~)SuEngfou51DGkJJA>}B<#%a)APSx>1} z(XaZAYQ|CE$MUAzmtS91IYO;$w1qSFcXs79+l{DitmL^a{(IJu9RaJKE-Vxaiyu~A z{cJ@-)(RaOZT9s!`rEe29X@}>ie$vgx{4)&B}?sc>IR0@3@5iO9sW^U6T8}p|DA@h zW8+DtrXMSggTL-CH)k{RbpotHg6puU{`g`giHZt~vYNC0<7a}H)Ixl*+W+%sBn;O1kDmz& zVYmLr&xAz(`d(pi!N0stR7m(QKO+hM^>t#TzkY^Kvm(O)|K8q9U{L|rSIym6y|2nx^Ru|3i3|aY)%dzT9nh2d0B#DZNnh2j2F%gm= z;d?O?ths;yz7sSNmX;)$m>Y{oh#L!;kpxNRqGyGS1%*w7#DoO|Oi3mrlCbodUuO2K Vv+K_dA|fs(BD@Z=1!_mv{Vy@)aa8~S literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt new file mode 100644 index 00000000..4a741b73 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt @@ -0,0 +1,7 @@ +SCANNED PAGE ONE +NO TEXT LAYER HERE + + +SCANNED PAGE TWO +EVERY PAGE IS OCRD + \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt.json b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt.json new file mode 100644 index 00000000..ee659d2a --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/scan-2page/expected/scan-2page.txt.json @@ -0,0 +1 @@ +{"updated": 1783974772384, "pages": [{"page": 0, "contents": "SCANNED PAGE ONE\nNO TEXT LAYER HERE\n\f", "ocr": "tess4", "lang": "eng", "updated": 1783974772384}, {"page": 1, "contents": "SCANNED PAGE TWO\nEVERY PAGE IS OCRD\n\f", "ocr": "tess4", "lang": "eng", "updated": 1783974772384}]} \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/scan-2page/input/scan-2page.pdf b/documentcloud/documents/processing/tests/spec/documents/scan-2page/input/scan-2page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7fac71e44744790925d24fa6967ba81fad6f1d77 GIT binary patch literal 46122 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 BPh$W8 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/case.json b/documentcloud/documents/processing/tests/spec/documents/text-1page/case.json new file mode 100644 index 00000000..58c9b0d5 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-1page/case.json @@ -0,0 +1,7 @@ +{ + "doc_id": -9101, + "slug": "text-1page", + "why": "Simplest case: one page with an embedded text layer. No OCR. Validates the baseline output file set.", + "settings": {"ocr_engine": "tess4", "force_ocr": false, "ocr_code": "eng"}, + "needs_ocr": false +} diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/metadata.json b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/metadata.json new file mode 100644 index 00000000..7cdef1cb --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/metadata.json @@ -0,0 +1,33 @@ +{ + "callbacks": [ + { + "json": { + "page_count": 1 + }, + "method": "patch", + "url": "documents/-9101/" + }, + { + "json": { + "file_hash": "f2486b2d0778989fa9ee60500310ca90703e080a", + "page_spec": "612.00x792.00:0" + }, + "method": "patch", + "url": "documents/-9101/" + }, + { + "json": { + "status": "success" + }, + "method": "patch", + "url": "documents/-9101/" + } + ], + "database": { + "file_hash": "f2486b2d0778989fa9ee60500310ca90703e080a", + "page_count": 1, + "page_spec": "612.00x792.00:0", + "status": "success" + }, + "errors": [] +} diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-large.gif b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..6bad130cb2a575910253c6a437aeafe2f04ee2be GIT binary patch literal 29695 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-normal.gif b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..145215a5aabfd5bbfd275f1eb63271059a1dcf73 GIT binary patch literal 19324 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-small.gif b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..2494fc11a22b8a65a0d3283be35b5a23f3f838f7 GIT binary patch literal 3170 zcmeH``(MlZ1IOQ=%eK$fwmxOmx?qu7mvg@3M1AS-SxpiWI!@^EwVV*`F!xL0vr8>X zR*Dd|bR{f8?pqfs)DUtx&Z4ps);N`@eb4zHzCV7Sf57YUc)lKw=d9V`!9np=pc|+F zu-R-QBO}AZ!{5Ju|MuFMt7Hk-}w-o5MU>gw$5?C9ut`}XadH*eb8+f63ZpMU=O z`t|ES{`lk7t5+{yzI^fG#q;OS+uGWmJ$v@_>C-1qp0u{MK7Rc8(W6HXA3ii1jV&!L z&CSgZ9z3{z|Ngyu_nMlT8XFrM8XE52y?f`*o%;Ivy1KgB+S;0$8iT>0*XwWJzJ2S~ zt(!M*-nen&`t|GAu3fu&^=fr>^_44EE?>TU>C&aDs;Y|@FJ8ECp|Y}4r_-H3fBxLL zb7#+P$=YbxlAS_NpjDgJ-c`B-nDC2N=iy{ za`MidJ9q5Zv3>jYZQHhO-MV$lmMxn$ZQ8hT@L93g- z3~Ebhc7bt`4M%bkn(cqc+Ls$YDWMLXmiVX$8eiIy!yh}T%`;cge8dT4N;fcq$1OaNH4F~8%-4T|(E6GWfoHd6{Y(H8{6S9*xoCFD+MbkH2OGkG(r2xiy)Zp5f&kxT@B>)9}=T$Xl`bl z{M%bY<`bYw?(mv`jMozmTLFgo0~GdE`On$En~Rpp(B;$i!NK(~_##ckmrMHOF4IsW z2~h$8!RAKeB03Q0olzI6mX^2dhaw$!hn&Wf#~zRJR#@MIG(kr+ zg^Fng3`~DNhdM@#QJ_EqdNm>jh%p*ybJa!#$Dx4eb%?m3CSt;31oe)X$9?Z*qeKQt z=qS9%5QYWY#D*7kE6H-;0(1t#jUxrZx2pu_>baUABZAP4p;iA{Y#BTvNhN3E$yj{7 zE3LsoVT<{~dgm1p3kVl!!ox87+1hv+YbExu&Mh+5a@RgSHk)v-eXJ$zQrhBcS(`$% zB$m86J`IY>&A!e_1P(Hn)%@rhcVce)O!xT_*{Ke{)@f(D2)}0=>^5i0C{C*~CxnlV zf2FT@HSf+6^RWy!4uEHt60S{qXq#J)cjWSCJ?LIQ7jd-A>QbTS=_q=fxNyubK1i0= zBJG>y*=-w9Z@wpE13%OuhX9jNAzdy-;1d9$R<&cxaTs>fP{U$8vGrycv&9(GoEkjs zg(lMFmY6zOX<#jiXmsb}3LmbCIk%yP)4YNjSO>ATL?9j&YRb>KreuFoF(y+j`%!J6 zM{&bk`YlS{eWCqE9*J9ZRNqzu!#&^NKFFg4Ng(zLzK|M7xfnjxnyt<(^75J87`fD% zlYhU+JE*ZSYNz#}hFQ#?HM?oyQEP75++x398=Dqiv*zhCivw2AzPI#+^-%Tw;vcs) z-uusx^{}2L5)s}@kCQBGR|5tJT;&l-)x3=MraUTrY9up-Cca$L1euN|^mYt(cPY&Ir;=*CyEhn zg9ZVlnGr(De7!=c{$?4diAG0p+NtvN8n%dc(OC*8fjT|KIU4m4>k(KgV@=UPEE9pb zVRGs|BRtlqq57r^9pGr#wSz>*l|iVV9^qNUbZ1OX`%xEEwRR1l5Umv2N}qY7qhml( zS8=3-596kJuyg~0%+x#htI3grJZ)sbvny`O?1d}l;J1L1<^|y0YZqiJ7U9t>63%en z3o$Ju?Y@NPGgw0px1>7b?KJ;jk~$S9F;Wk__UYfCR+3uRV>>TdMS`U$iAIQdzJv=c z&N%Kehk$$<7!n@h{>nlfqC&W+4Pggb zD3kf)STukz?-;2k(%P9$(Q=nGG3jb-r;`|D2R5kqoKQP~iEtkz;BnX+x~gq7ZZxI~ z%p_}sx*?v;9x z5 zhXC*)wTdACkV_lrbi<*YuHYl8BWQ6t1X7xSohI()uA;IR->UolvSL2W$}7L(+%r&G zv+I-HO5fKCyy5b|&wawS-{v@d{%SmM>r3hU;htr-p|+M={a0FsKPKD0ne1=R8oWDy z#Cpv3-8}#H(6g42{_D13%Yob9-_5rTy|j%Cw%i^WXt9lav)KTbgo8;mmZWYcv3!zI SO)}d^_8^IKWzSr2Fzvr(xz~*V literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/pages/text-1page-p1-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec50610dbfc7fa0c718197138175acd65c99e35f GIT binary patch literal 834 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 C8$-AN literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.index b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.index new file mode 100644 index 0000000000000000000000000000000000000000..d04ffaaf38c7ccd69eea8fbf897b003bd4bce60f GIT binary patch literal 1188 zcmV;V1Y7$biwFR8OI2zD|7&2G$|Jx42DMW(ycxV%+NL5tj zz+k9n&ZT;2>!EF2T!sn;3i(M{TsAiPA(aKG`p$_Zi8=Y{`T>dQsl^ILK-nNWJFe8c z6p$h=BQ(`uRr=2PrFkU^hWg%_DaFwyAT6;-dW;cz-175EfK*0mPMLx!#AqaiCRhyD z_f1X7Omxbxh&BMqni(1?m|Ggf>IdbQB$lKq80ZJ37U!21B?FxbvL*;srtdCNhKf-NW@UzDX};eEbIYve`-l)a-zO# zUUGg)W?s5}cxIksUU4Rjk7TeJ!eF1&y!4U`1xs^%x6GW9)FOSi9H1{;Qh|C>fjWvy zic%AExhihSc5UQpFyL|dUgP@jz?Pi>T#poX?BKk4#4}2!q~POk-KP}=d#tN6%eZuO z8-t&yO#Hj>q1N}~jyJX6FYa^=(KvHOM3Pmri?ir(L0R(I1@;$aeRExYI6P{O*)PV6 zp5i)OsZ)HHF(Xm~&`E|ymIT}s+GEJ&jFde=YdB_HO(fqwD9E^9pqJt@e`OiaC1p%z~yC zw%TK+2U}s}&YH8@?XlQ9-Y+zw(WNPN(Xkp-H zYG!8SYT{(!W^7^?3y#*rq7rZb8X6h`Qv<6v2e6>v0G0}>uKsRZQ+#7td;=MQ=_8Pl zfnhYDsT9zN;7w=oJ^>8y6T>Ayr+5n>)h?q|%E+rykc#Iiz5+~$)Btg^Ifj!B4J`<` zS+v`b&&iO-`8%-6d0?LTdW%q!L()&_AoC*)3pyCt#Lo5a*Rj1Fs1t9=XXra6bBEF` zJ}bLTd!GGXKCRT|>n43kF-g<=HW#hcn94)8u_WIMTHx;Z`K{5(F7`P(A}9H)wj?~d zwrKOt^M^~<6iF3LvtKPN?~A3LvA}dX!P-)_$C{7HkcYK;{vq{-Bm1{c6krwNl?}3T zVa{=3WaWLX&RLXLJwEuS7u`ly?Onm&gQ(Hf#J{R*AS)sDzL}P*H z#|G!b+Ni~6^_ruNO9fkAuHDQuyI!m>HO}{ZeRIj|J{`9t+t+=b?=*gA+g{vwX=WW0 zn@TVc8z7mXx0(hiWL!%WBq}Z8Kss{keiRk4Q5C8xd CRZW2a literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.pdf b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e84548133daefd03c5957d65389ebf3dc1f0cc49 GIT binary patch literal 1504 zcmY!laBG{-kJB{R_}zXGVr00_+tjTFo+jTC?~0f|LG?J&m%r55Lx79|5+ zZvob-ACzB`Sdt24L;V4A3X&&4R>EB3mYGwMTBM-wmIKt`lA4^K0`#{}YF>IthJvLz zNKw*s?Q#>yg5a9h^6hct**T6ny-x`?R89k9AdM z8JCW3WAGD|iGLS9)cSth@uv3s#htDp8fUJENU~~naTXmeC`&%O!2ZIlZ?4M^heypZ z`^9+CQ(OlW#8A7Sfei{2V%%wHXo2ET(QZRNCqo|R?{k#YADCyp-XfIbkn~eJ$oxpd zf(}MDv2*?Vb!=}3>cm^}8TwAi+@W-f&&qDoo@c+8Pb;E{Nd6yMN&o6>{koR`(nBt6q!W1-pCTg z^{PGAd`yNstkv@msW%+izkQ+rs}Qejkd+H_jte6z?{js|qQvTXwqF)HFFms|JdLCM zx7&_=nZIM=Jre>zLS7@-aOEN{{4tB(%qn%gK?)fX+at%`>xo6(sHppXdj${YnbRpRJa>C_rfL*wC@&9v_-nz}wRhv^7+pWN zoL8W$Z?%^MSIp6)XBITIu>CIj@?pb-)c;HL3Vtm3slRfDK=Q4OnfBuSoBkxab!A#y z-DZ28`K`9>OWr@xYO$Ce0p$+3NAiLB2bAqIQgg}_EP*mXz*qo91T^u1gkXxD5{pya zKpONtfT~kVGLsV(^j-6SnI$tXT|qxQGtV)vI1?cdT$)q@ER=W8Nh*pnW?Fqv`w;cQi`duk%g%lkY!+ym~3oeVhnU^vQc7cvT>q;osF4AQc{YgfpLm?s)>nd rl7We7Vwy#od74RTvW1z6L8@IWB*P>Ym4E}$(9q17OI6j?-;E0Zk52W; literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.txt b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.txt new file mode 100644 index 0000000000000000000000000000000000000000..1c1e92fc3b673bde7d96341513b3753d9f2f2734 GIT binary patch literal 200 zcmYj~K@Ng26hvKfirKmI0J^NzkQitv7pU|Ljir$G6Xo_+*|?ib-kVWPEu_|Eb%iRG zyp@$iD|HL4q$q?*bVPEY_k`K>gqPz1CV<8}SxXj7Z-zH3#Y52!E^XMjBu1DRcS0?i zy*OtdiMd^ C8$-AN literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.txt.json b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.txt.json new file mode 100644 index 00000000..83667daf --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-1page/expected/text-1page.txt.json @@ -0,0 +1 @@ +{"updated": 1783974773155, "pages": [{"page": 0, "contents": "PROCESSING PIPELINE TEST SPEC\nCase: single page with an embedded text layer.\nThis page must not be OCR'd; its text is extracted directly\nfrom the PDF and the output PDF keeps the original text layer.\u0000", "ocr": null, "lang": "eng", "updated": 1783974773155}]} \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/text-1page/input/text-1page.pdf b/documentcloud/documents/processing/tests/spec/documents/text-1page/input/text-1page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6ffeeece1d8c8d8218fbe6627eb37a35bc682134 GIT binary patch literal 1454 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..1604a811aacc4ee5a0873b838e0ef189de531708 GIT binary patch literal 30711 zcmaHycRbr))W^SxEIYQEv17;H#8z#sT17QlRh?)RrPUzB-Zg3zwP);25PNU6S5+6P zs9#r}KCjpF_jCWff1LZeuXD~l=Y2lc^rDHnn%fkdkB$fcR4Vn)pFh8U|Niys*MI;0 zcYc2UoK7IQ5@#Fsf{)Z1A_V)JP zzkk2GySu%;y|uNqxw*Nqv9Z3szP7fuy1KfuvhwcTyQQV2#l^*ig@yU~`MJ5d+1c5d znVIS7>8Yuy$;ruyiHWhXvC+}dk&%(%;o+g7p~1nyfq{Yk{(cID(%0A5+uPgI(?cec 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 E1DNWZ;Q#;t literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1.position.json b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1.position.json new file mode 100644 index 00000000..120272c1 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1.position.json @@ -0,0 +1 @@ +[{"text": "Page", "x1": 0.11764705882352941, "x2": 0.1672467320261438, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "one", "x1": 0.17315196078431372, "x2": 0.20858333333333334, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "of", "x1": 0.21448856209150327, "x2": 0.23220424836601308, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.23810947712418304, "x2": 0.2676356209150327, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "multi-page", "x1": 0.27354084967320264, "x2": 0.3726977124183007, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.37860294117647064, "x2": 0.41284477124183017, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "document.", "x1": 0.4187500000000001, "x2": 0.5179281045751636, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "The", "x1": 0.11764705882352941, "x2": 0.15424673202614378, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.16015196078431373, "x2": 0.2073937908496732, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.21329901960784312, "x2": 0.2475408496732026, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "files", "x1": 0.25344607843137257, "x2": 0.29121405228758174, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "must", "x1": 0.29711928104575164, "x2": 0.34315032679738566, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "contain", "x1": 0.34905555555555556, "x2": 0.4175392156862746, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "this", "x1": 0.4234444444444445, "x2": 0.45649673202614394, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.46240196078431384, "x2": 0.5096437908496734, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "1", "x1": 0.5155490196078433, "x2": 0.5273594771241832, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "marker.", "x1": 0.5332647058823531, "x2": 0.6052532679738565, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1.txt b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p1.txt new file mode 100644 index 0000000000000000000000000000000000000000..ef267a904ce2b8ebafb5b5e8762e94e2af213624 GIT binary patch literal 95 zcmWGYOixwF&jaE#g_4X^h1}Adl1$wKkZ4J2MTtU6esXDUYF>#RR|rrRA)c0*lUfW^ fU0kA&oS#>cn3)IEo>>f0VW^OsSd^Vwq{jdNTxB7M literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-large.gif b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6e400e2587cd74ba43688dc4d7a6f06564a0961 GIT binary patch literal 15971 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 sy4@h9Z~vY+XjeN|8%UO1UqJ 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 idVYBJj0f~gg!cT5>iHGlGnv-&JGg~IWyE4qB z+{Q+8spb~Be#fx6WRjAU$%ri0C==y<&;M|Kd_RA{=ZDYpd_28LPL3gsz#@Eb&d-wM3+o`Fk zH*eldPENjl{d!_z;?=8HFJHbKA0L15;>Fn5*z@PlM@L7+V)4kx$g^k9hKGlThK2?Q z2L}cQL?V$;DD3a=@9XR9?d=r^1U)@H-QC@MJ|BXhuCA`m&d!dGj`sHUwzjs`*4C#_ zpSHBLG&eUtdGe&Gsj0ECv7w=%zP`S$u8zm!J%0T7(W6HXA3m(Dt*xo4sjjZBs;c60 zxep#ZsI084sHos@IBYh%yu7@utc=BCm6n#4l#~<~7Z(*36&4oWzkmPUy?X@(1^M~; zd3kxcxw%XxGbbk}J3BioD=RZI^X}cdckbND$jC@fPftrrOHEBpNl8ggPEJZnN=!_o z)9ExCjY_3bC=?I`Z{NOs>(;HCH*em!aU&ri;rjLK@$vC-adEM+vDdC$i;0Peii)~? z`SPVpmm(u0BO)R$Uc49<76$yEzqNq%U$(zqAfmSc7~05-$Kun_+Ixe9yt1BTEZ(Qc ztFF8^UEl8Fl(3H7pNTu90RWYl0=ym7aw94XFf_G4t)q4fN78a8TveLcg{r5*k2fmO zT5davj8SQ5TUdo)*Y4jPK;TRmD#JWPMb5$#yfXe_<)AbAUgfZkfq$L{42R>qX+|Ib zkU>D^{6;GYlAHGpoBteWv?vOm%`~w}fw*!T(hjqOXSY%yTZ^=!ec=;BYSFNCrd4cf z*eUIKtclG@oRifV4^91FHMjv;>~jo_!?#&j?C)&AVBeop=!6FPsDaDX1e^0eH9uYb zAZ8ya_3LQ;vNX{UKK-ntZGA=3lfG^0-`T#gx-eGr?~%@q&2{eBQ` zSJ(D7fV7l=D!S(-6to3bLd7^NNN8A+WeAAC;2-|_=JJAK7w7VWldR?o!tyT6-#cGfHJ|HHZ5fcZ`-gHq{Qxo*f9IF_TsGrM z_o-P%bTI(J{TIL_BS#sIsBSfd>&CcaAgY!X_6lE9hZU@XLNmmCl(Th|o5nu@F-dd3 zrIrWohz`XS<_K*w-F~u1vwE-&TjFj_8- zpseMPie7}AkKR)&@5VUF(2t6lM$bL_0QFQ?lX#$eeTC4TPuWw{0N1}@jFHVpWIh~>FNT)8qN z)4`C5Pc;cuR;JculI@l*PhP^O#+FRX6y88u=BvkzWl?qa;h@79B7x$rd+16Qr0pLV zg3vq%N#MqTfg?0s)rQ>Vx&`iP@gQw4V2=Dv zpNI@%A++f@q!AfV^CMDCu0m)HkchH}C}!;d%8p0@1pnc|O@t79H*rRT48b(8M3r9{ zp!zW)9i9P0@4Y(AWx)keX_i!VW;n5WFsJaQlznhqMyg)Y z&hYbK8}t1b(u3|0IbCmQ_on<5{=RN5qa4}}`8 V76^SS_ved-&N|10!eGF`{{rMmHWvT@ literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc6ca1495125240f76dd9f259051c9f2e92f2be5 GIT binary patch literal 474 zcmV<00VV!NNk%v~VLSj%0EGYm|NsB~{{H>_{rvp=`}_O)`uh3#`S|$w_xJbp_4V)X z@9ysI?Ck98>+9<3>gnm}=;-L@=jZ0;=H=z(JZ8 zEoj*A5I}%{009=NT*zY}3?^c9&@h4p3=#vP%AHHMuHCzM^XlEp zx3Ay7fCCFIn(}S{1t&C`$$(PMr8j;)9bbU(UR_^XJf`OP@}?y7lYW QvuoeZy}S4CDgy!lJLl92Qvd(} literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..fefa2e25bbfaf42dc254c49a94f80704f933552f GIT binary patch literal 31291 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�S6>6@RWn4j}7j}A4DNi>hmHIFMZ zkFPUNXfsb7Fi)B?PhK`p*)eCJEST~Zsp=MK`WERFiwqBo%utK0M2qZPi}Pg`7wRl> z+AMMhEb^u-@|P_Nb}R}}mPPWG7u78<>01_4EH8UlUJ13lnrKmv%FSkdA-fD zY{2rylx6v{<;@*S7Rrh(Z&jggRjF@PMX|c&VO1S!Rg-8{n`?Eu%<4{^)!jC$x&f>D zDXV+SR`++T8c@~`XB5hF4@z$+r7w}vpG$dBMtNCBdDTW47@!PJQC=@o-t16@ zP&UKzHgDB!M)Yk)DK=vsHshf-6NxsHxi;_0Y~I(|d}yuw4kXT}-t7l56|5%=TNI?NXcV@__9MZ_4)jvh9x@+f|g^PkFol z)a};v?ba!F8yp?1F#?Y465ewW$(sk7T|v)dW4`#WX#Z`qEwW4F7<45C2g+np~B zsQflm0Z%F{j0#VpBJ!xn8&tu1s!%%>HAqEIQ-ycO+`m*1Z7-r=FREcLW?(OFV=v)p zFBxVpm1HlSXD@TZUbfy|uH9aK&|YEM9=l?{=dV2u?SNNsP}FcxGH_6~aoFqWpc3Yw zn&hxA&td-!hXeHvYV8i{gAN+g4hL5p4*hi?pdB?891m+a9x-s#vT;1>>3A&6@pzJ> zcAlfo4M*L2N4<7O{Xs{AX-C5qN29-vM6?r0!HJC1a56Si`|b23kIvdD9? Syy0Y3?_}NXw1GkZdjB8#<(e7* literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2.position.json b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2.position.json new file mode 100644 index 00000000..4ebb1b32 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2.position.json @@ -0,0 +1 @@ +[{"text": "Page", "x1": 0.11764705882352941, "x2": 0.1672467320261438, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "two", "x1": 0.17315196078431372, "x2": 0.20620424836601306, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "of", "x1": 0.21210947712418296, "x2": 0.2298251633986928, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.23573039215686273, "x2": 0.2652565359477124, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "multi-page", "x1": 0.2711617647058823, "x2": 0.37031862745098043, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.3762238562091504, "x2": 0.41046568627450986, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "document.", "x1": 0.4163709150326798, "x2": 0.5155490196078433, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "The", "x1": 0.11764705882352941, "x2": 0.15424673202614378, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.16015196078431373, "x2": 0.2073937908496732, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.21329901960784312, "x2": 0.2475408496732026, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "files", "x1": 0.25344607843137257, "x2": 0.29121405228758174, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "must", "x1": 0.29711928104575164, "x2": 0.34315032679738566, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "contain", "x1": 0.34905555555555556, "x2": 0.4175392156862746, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "this", "x1": 0.4234444444444445, "x2": 0.45649673202614394, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.46240196078431384, "x2": 0.5096437908496734, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "2", "x1": 0.5155490196078433, "x2": 0.5273594771241832, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "marker.", "x1": 0.5332647058823531, "x2": 0.6052532679738565, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2.txt b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p2.txt new file mode 100644 index 0000000000000000000000000000000000000000..2240b2e28ac6499e8423f26fbb647753a0b0c5fc GIT binary patch literal 95 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 CGdl19 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-normal.gif b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ff46bcc796e61abf54364551d99f361d8034f21 GIT binary patch literal 10279 zcmWmJd0dR$`v>rI-?Q&`X_?Y8mC}YON}^1wR2WO1Bur95GAQ~|+*4B%B_kqBj3`MM zOQgp#?Te*pnVR-#BkMCL2G#uh{y6`i*Xw$n>s;6SvuwG)+ro&a@NtX?0IgO#Jv}`& zH8nXo`RC7{-@kwV`t?hr(fs`R^T&@L6B85TEp+bA3l6||Ni~h*x0*w@7}(BJ32Z#GBPqeJUlcsG&ne@QmF<82KxK^`}+EN zdwY9&db+#2ySloRN@ZtfXGceeLZN7HZ*OaBYi(_9X=#zm<;~5_Z{ECl{rdH*SFc{a zeA(30)Y#bA(9lp{Utd>OS6f?KQ&Ur2U0qdGRasdnlgVDZc=7!C^JmYVJ$?H0-+%wD zsHk}IeZ_fiR8+aE0-@{&d<-kbm`K?ix)3k zxN!db`MkWmbLY;TJ$p7cH}}k$GpA3V&dJF+b?TH@EIxViWOjD;i4!NXva&KWGmjrX ze(cz>jEoGCNR*zQo|cv-6be&QQ&Un>1OfqyqDPM&J#yqoa&mG~QqtkWhYuY(^uPc8 zFEKIk;K73j4jf2GNQjS*-@kwVzJ2@l?%m7h^Y`r86Bie^d-v|x*w|gWcJ17`bH|Py zF)=aQw{MS*j*g0o+O}<5WMt<y?1^B6vLBmMvR0Z{ECV)28t7@QoWchJ}S~*sviq zH1wZ;{#n0%eMm^ix^?T;u3fuk&6?G#S97`CRjXF5T)A?^iWR}Z!9hVmfq{X`moE

hlj_KB}*1BUhMAfzG%@RH#fJ1 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 VhpF@ZhZn3Lc8MNdKqrF5{|7FbsEq&s literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-small.gif b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..a02a035f0e79acdd6a0897ec59c5edd8268c1c03 GIT binary patch literal 2030 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 F{|{nalQ{qY literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3.position.json b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3.position.json new file mode 100644 index 00000000..32a75f4b --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3.position.json @@ -0,0 +1 @@ +[{"text": "Page", "x1": 0.11764705882352941, "x2": 0.1672467320261438, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "three", "x1": 0.17315196078431372, "x2": 0.22156209150326797, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "of", "x1": 0.22746732026143793, "x2": 0.2451830065359477, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.25108823529411767, "x2": 0.28061437908496734, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "multi-page", "x1": 0.2865196078431373, "x2": 0.3856764705882354, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.3915816993464053, "x2": 0.42582352941176477, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "document.", "x1": 0.4317287581699348, "x2": 0.5309068627450982, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "The", "x1": 0.11764705882352941, "x2": 0.15424673202614378, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.16015196078431373, "x2": 0.2073937908496732, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.21329901960784312, "x2": 0.2475408496732026, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "files", "x1": 0.25344607843137257, "x2": 0.29121405228758174, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "must", "x1": 0.29711928104575164, "x2": 0.34315032679738566, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "contain", "x1": 0.34905555555555556, "x2": 0.4175392156862746, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "this", "x1": 0.4234444444444445, "x2": 0.45649673202614394, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.46240196078431384, "x2": 0.5096437908496734, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "3", "x1": 0.5155490196078433, "x2": 0.5273594771241832, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "marker.", "x1": 0.5332647058823531, "x2": 0.6052532679738565, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3.txt b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/pages/text-3page-p3.txt new file mode 100644 index 0000000000000000000000000000000000000000..683bef951dddff2c3d05ea2e19d2a7308689fcb4 GIT binary patch literal 97 zcmWGYOixuP$tX%qRme{RGEx5tj zz+k9n&ZT;2>!EF2T!sn;3i(M{TsAiPA(aKG`p$_Zi8=Y{`T>dQsl^ILK-nNWJFe8c z6p$h=BQ(`uRr=2PrFkU^#`@lwDaFwyAT0_OVA2p|dQdEq0mcXe-175EfK*0mPMLx! z#2zGtCRl9J_f1X7Omxbxh&BMqni(1?m|Ggf>IdbQB$lKq80ZJ37U!21B?H|JvL*j;#9D(2hh!_C7H>I z`mTA&`6-!s>H6WBd5(F-nJ_+*!Da}9eNyw%OEQ4LVyN$ynNyNlr0lq#jMszN>>F4Wy;qa{*(OA{!@m7Phs!Ata!bBmoC0^iC6fj_zvWI zsBd85P*Iec#$}*jXu@Rx2MT7UrpBfUX$o*LLtt=$W%3YWW=0rdhDPR?VrCW?Vn!B* z7-Gie1{h+drkG;pCdL?I7N!{X8X6d5xY^Li7{fe6V-rkurbb9^<|-*l%*;tG0wtB; z%&JsiSOF7veu)A&8|izxMB5m;7#W*bIvZQK7+acII2$<{nVXv%I~!S;8UaNuo$PFk zolM+-?sPVGGqx}=b22pmrZ#gkOCv)!OEWiPBLllwa6(HgDgj4`p}7$-HE?)y01FBZ zLoQWSSARFIDZV?|d>1kT)5k(a28Pjy8>A73h_1tIz7nA5k^n~6Xe42eq$%D4NHySS zwKwvrz4J@s3Y`GwwG{yHh6CyQO&@9v~Aqm0&J=iU=gpL7$(DCguJOt_<{HK~J%OX^<#dgth~Z%(-TDTaEl)AEhaq?@!&Ia`~Y|=CO}*;+E|(PuYXBWo@w3 z-(XLmx!K5sfSX-=Hu4=Z;BhIhZ{5$3q;9!fD9It|W!n?pjSMR#5)vN%F5Da<2Wo)) zx^xoJ09p8V_5OODnY9mJFBCHg@tvly;UU*5Q|(y{J{3o%9k$mki7^)YvOwjM-H*1+ z)NS&S*V&GUe1Ea}+vBt8R@SjE_!X`xzQyJPLmcr8ObslE)IfQx8yZ2P-55RE4UMqG zyAh#y?_SHtcMmKqi=hb(zET`lhC2COYL;0A&n-(9FQ~6$G+`R@Q^U28;EEpvVYP0D6+f_Jcwh zX1`lzPDyH!g1%c0Fu+_=lk-!6(e9I)mtK;gU_PHwzwd@|di*VQ$1zy(Je89eZCc$QjI&|Lo%IJjYhm;2Tq8r#yCDzSrJ9 zhOMvny|}Q5g%7Lrul)-ji9YV1C4FtlW;6RcDW5N9|1s$9TB&l027fNzSdfE1bcO%0}iG+lQ zzY8~q$h~`0o&M|6Nl%NT9J7tqygl%5;osH!>vd+qO$wyveJ0kM^#p-X5&!$^h$G+fK*sb^m(+{BZ3HL)j zFa?7$UPfw8nSvoC_t@DXrBhIXgsa9IQ3fbJ_U$s{V>0AnsosCcUg6`>-R&(J6Ea>* zxTB~wse_42>R$hP=jgLITXx`X0c1 zl3J3PoT#Ahng=YYGV{_E^usgr9P^4Z5dy)bNhRRQ3si*}!fF7p35fcqq9`?u%Rs@< zgv$U96wFLbjZGEO6yRcpz>*pS6!H*aX28k=P0SFe3th~}448n>)EQd@YM0#wwa#Lt`Ugm4<4bp{W6ed4}c&NamFkC1&OTYX(pO z6_lS}q5#Sez=lC^W>qRM+!XXZT@<2i3{#AZO)Qg*EmDjv%`B3Q5{=Bw&5e_dEKH4n zqLxW^Ho$;LOfxaIG`27`G)}ZMPBJh`HBL23vM@AHNijD{wu^#RR|rrRA)c0*lUfW^ zU0kA&oS#>cn3)IEo>>f0VW^OsSd^Vwq{qO;6#zD>JfEr-7-3kDQItwuKN!QU001)q BWv>7L literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/text-3page.txt.json b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/text-3page.txt.json new file mode 100644 index 00000000..78ccb1bd --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-3page/expected/text-3page.txt.json @@ -0,0 +1 @@ +{"updated": 1783974775645, "pages": [{"page": 0, "contents": "Page one of the multi-page text document.\nThe page text files must contain this page 1 marker.\u0000", "ocr": null, "lang": "eng", "updated": 1783974775645}, {"page": 1, "contents": "Page two of the multi-page text document.\nThe page text files must contain this page 2 marker.\u0000", "ocr": null, "lang": "eng", "updated": 1783974775645}, {"page": 2, "contents": "Page three of the multi-page text document.\nThe page text files must contain this page 3 marker.\u0000", "ocr": null, "lang": "eng", "updated": 1783974775645}]} \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/text-3page/input/text-3page.pdf b/documentcloud/documents/processing/tests/spec/documents/text-3page/input/text-3page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..60069809c85218b1e523614262b3b1b73a346fa1 GIT binary patch literal 2138 zcmY!laBVf>eFy#FE6E{B-?*#Prl+1tXwr zkewY@YF-LR5f_M$tQxFJ-#NcDuSCIE-#asN_PCr-Fq&fNoAL$xKevcg;)APsz+n*ALIkbIdEwgz=Gl0_PHwzwd@|di* zVQ$1zy(Je89eZCc$QjI&|Lo%IJjYhm;2Tq8r#yCDzSrJ9hOMvny|}Q5g%7Lrul)-j zi9YV1C4FtlW;6RcDW5N9|1Ax2ltp4`+Y`T?o>0AnsosCcUg6`>-R&(J6Ea>*xTB~wse_42>R$hP=jgLb;@otszmJCiUm>MyCDGW?RW#_lbV}=lNXY=y$q5HD}Iy zKk@91_(vM;6DIFr+)^TYA6rNvmAtTG$jF$0tC6#G!!f@iKh-OYolB)BnIBld!}nrV>m;SC z0)#T6| zs*t7t7c&HwwjiL8hY&LZ#w41Up%JizLl-jx78+<`Mi#&Xh9+ig4$S*#Vy32;V&*2m zAV*VYVTxg|p@A`mn+=VOG0ZbGHo;V9YJ}uwu9Bj}%$(FBP+cCJS(OS5D`4H2U!nl6 zh4npMqHPRajEqezosBJAj4jP9oQ)if%+1Y>osBF^jew$-PIflNP9|;!1{Ti7ZpIb{ tW=^ICz{<+p%+kov&C<-x*vP;Rlog6g5{pW}5n^a=WXPqe>gw;t1pw)}-8=vQ literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/generate.py b/documentcloud/documents/processing/tests/spec/generate.py new file mode 100644 index 00000000..a4bb9d7e --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/generate.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python +""" +(Re)generate the golden outputs for the processing pipeline test spec. + +For every test case under `documents/`, this runs the current pipeline +against the case's input document and snapshots everything it produced — +the storage files and the database-facing metadata — into the case's +`expected/` directory. + +Run this after intentionally changing pipeline behavior, review the diff, +and commit the result. `test_spec.py` then validates that the pipeline +still produces these outputs. + +Requirements: + - a running Redis (REDIS_PROCESSING_URL, defaults to localhost:6379) + - for OCR cases: the Git LFS Tesseract libraries + (git lfs pull --include "documentcloud/documents/processing/ocr/tesseract/*") + and the pinned eng.traineddata (downloaded automatically on first run) + +Usage: + python generate.py [case ...] # default: all cases + python generate.py --check [case ...] # regenerate into a scratch dir and + # compare against expected/ instead + # of overwriting it +""" + +# Standard Library +import argparse +import shutil +import sys +import tempfile +from pathlib import Path + +REPO_ROOT = Path(__file__).parents[5] +sys.path.insert(0, str(REPO_ROOT)) + +# DocumentCloud +from documentcloud.documents.processing.tests.spec import compare, harness + + +def snapshot(runner, case, metadata, destination): + """Copy a processed document directory plus its captured metadata into + the destination directory.""" + # Standard Library + import json + + destination = Path(destination) + shutil.rmtree(destination, ignore_errors=True) + shutil.copytree(runner.doc_directory(case), destination) + with open(destination / "metadata.json", "w", encoding="utf-8") as meta_file: + json.dump(metadata, meta_file, indent=2, sort_keys=True) + meta_file.write("\n") + + +def main(argv): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("cases", nargs="*", help="case names (default: all)") + parser.add_argument( + "--check", + action="store_true", + help="compare a fresh run against expected/ instead of overwriting", + ) + args = parser.parse_args(argv) + + harness.ensure_environment() + + cases = harness.all_cases() + if args.cases: + cases = [case for case in cases if case["name"] in args.cases] + missing = set(args.cases) - {case["name"] for case in cases} + if missing: + parser.error(f"unknown cases: {', '.join(sorted(missing))}") + + ocr_ready = harness.ocr_ready(download=True) + skipped = [case["name"] for case in cases if case["needs_ocr"] and not ocr_ready] + cases = [case for case in cases if not case["needs_ocr"] or ocr_ready] + if skipped: + print( + "OCR unavailable (git lfs pull the tesseract libraries and ensure " + f"the traineddata is present); skipping: {', '.join(skipped)}" + ) + + failures = [] + media_root = Path(tempfile.mkdtemp(prefix="dc-processing-spec-")) + try: + with harness.PipelineRunner(media_root, use_ocr=ocr_ready) as runner: + for case in cases: + print(f"processing {case['name']} ...", flush=True) + metadata = runner.run_case(case) + if metadata["errors"]: + failures.append( + f"{case['name']}: pipeline reported errors: " + f"{metadata['errors']}" + ) + continue + if args.check: + scratch = media_root / "check" / case["name"] + snapshot(runner, case, metadata, scratch) + problems = compare.compare_case( + case["dir"] / "expected", + scratch, + case["slug"], + ignore_metadata_fields=( + ("file_hash",) if case.get("redactions") else () + ), + ) + for problem in problems: + failures.append(f"{case['name']}: {problem}") + status = "ok" if not problems else f"{len(problems)} problem(s)" + print(f" checked against expected/: {status}") + else: + snapshot(runner, case, metadata, case["dir"] / "expected") + print(f" wrote {case['dir'] / 'expected'}") + finally: + shutil.rmtree(media_root, ignore_errors=True) + + if failures: + print() + for failure in failures: + print(f"FAIL: {failure}") + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/documentcloud/documents/processing/tests/spec/harness.py b/documentcloud/documents/processing/tests/spec/harness.py new file mode 100644 index 00000000..f4d8ff27 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/harness.py @@ -0,0 +1,351 @@ +""" +Run the real processing pipeline in-process against local file storage. + +This drives the actual serverless functions (info_and_image, ocr) with: + +- the `local` environment (files written under MEDIA_ROOT on disk) +- a real Redis instance (`REDIS_PROCESSING_URL`, defaults to localhost:6379) +- pubsub topics wired to an in-process message queue: each function runs to + completion before the next message is dispatched, mirroring production + where every message runs in its own Lambda (pdfium cannot be nested + within one process) +- API callbacks captured instead of sent, so the database-facing side of the + output contract (page_count, page_spec, file_hash, status) is recorded + +Nothing in the pipeline itself is mocked: pdfium rendering, text extraction, +Tesseract OCR, grafting, and text position extraction all run for real. + +OCR requirements: the bundled Tesseract shared libraries are stored in Git +LFS (`git lfs pull --include "documentcloud/documents/processing/ocr/tesseract/*"`) +and an `eng.traineddata` must be available (see `fetch_traineddata`). +""" + +# Standard Library +import ctypes +import hashlib +import json +import os +import shutil +import urllib.request +from collections import deque +from pathlib import Path + +SPEC_DIR = Path(__file__).parent +PROCESSING_DIR = SPEC_DIR.parent.parent +CACHE_DIR = SPEC_DIR / ".cache" +DOCUMENTS_DIR = SPEC_DIR / "documents" + +TESSERACT_DIR = PROCESSING_DIR / "ocr" / "tesseract" +# Dependency order matters: each library must be loadable when the next one +# needs it (in production, Lambda's LD_LIBRARY_PATH handles this) +TESSERACT_LIBS = [ + "libjbig.so.0", + "libpng16.so.16.37.0", + "libjpeg.so.8.2.2", + "libwebp.so.6.0.2", + "libtiff.so.5.5.0", + "liblept.so.5", +] + +# The OCR language data used to generate the golden outputs. OCR output is +# only comparable when produced with the same traineddata, so the file is +# pinned by content hash. Production language packs live in the +# `ocr-languages` storage folder; if you want goldens that match production +# OCR exactly, drop the production eng.traineddata into .cache/ instead. +TRAINEDDATA_URL = ( + "https://raw.githubusercontent.com/tesseract-ocr/tessdata_fast/4.1.0/" + "eng.traineddata" +) +TRAINEDDATA_SHA256 = "7d4322bd2a7749724879683fc3912cb542f19906c83bcc1a52132556427170b2" + +DEFAULT_ENV = { + "ENVIRONMENT": "local", + "DOCUMENT_BUCKET": "spec-bucket", + "API_CALLBACK": "http://api.processing-spec.invalid/api/", + "PROCESSING_TOKEN": "processing-spec-token", + "REDIS_PROCESSING_URL": "redis://localhost:6379", + "REDIS_PROCESSING_PASSWORD": "", + "USE_TIMEOUT": "false", + "TIMEOUTS": "15,30,60,120", + # Required by the local httpsub mock; never actually called by the runner + "DOC_PROCESSING_URL": "mock://process", + "PROGRESS_URL": "mock://progress", + "IMPORT_URL": "mock://import", + "SIDEKICK_PROCESSING_URL": "mock://sidekick", +} + + +def ensure_environment(): + """Set the environment variables and Django settings the pipeline modules + need at import time. Values already present (e.g. in CI or a dev shell) + are left untouched.""" + for key, value in DEFAULT_ENV.items(): + os.environ.setdefault(key, value) + + # Django + from django.conf import settings + + if not settings.configured: + settings.configure(MEDIA_ROOT="") + + +def load_case(case_dir): + """Load a test case definition from its directory.""" + case_dir = Path(case_dir) + with open(case_dir / "case.json", encoding="utf-8") as case_file: + case = json.load(case_file) + case["dir"] = case_dir + case["name"] = case_dir.name + case["input"] = case_dir / "input" / f"{case['slug']}.pdf" + return case + + +def all_cases(): + """All test case definitions, sorted by name.""" + return [ + load_case(case_dir) + for case_dir in sorted(DOCUMENTS_DIR.iterdir()) + if (case_dir / "case.json").exists() + ] + + +def _is_lfs_pointer(file_path): + try: + with open(file_path, "rb") as pointer_file: + return pointer_file.read(24).startswith(b"version https://git-lfs") + except OSError: + return True + + +def ocr_libraries_available(): + """Whether the bundled Tesseract shared libraries are real files (they + are stored in Git LFS and may be un-pulled pointers).""" + return all( + not _is_lfs_pointer(TESSERACT_DIR / lib) + for lib in TESSERACT_LIBS + ["libtesseract.so.5"] + ) + + +def preload_tesseract_libraries(): + """Load libtesseract's dependencies into the process so ctypes can + resolve them (Lambda does this via LD_LIBRARY_PATH).""" + for lib in TESSERACT_LIBS: + ctypes.CDLL(str(TESSERACT_DIR / lib), mode=ctypes.RTLD_GLOBAL) + + +def traineddata_path(): + """Where the pinned eng.traineddata lives (override dir with + DC_SPEC_TESSDATA_DIR).""" + data_dir = Path(os.environ.get("DC_SPEC_TESSDATA_DIR", CACHE_DIR)) + return data_dir / "eng.traineddata" + + +def fetch_traineddata(): + """Download the pinned eng.traineddata if it is not cached yet. + Returns its path, or None if it cannot be obtained.""" + data_path = traineddata_path() + if data_path.exists(): + return data_path + data_path.parent.mkdir(parents=True, exist_ok=True) + try: + with urllib.request.urlopen(TRAINEDDATA_URL, timeout=120) as response: + contents = response.read() + except OSError: + return None + if hashlib.sha256(contents).hexdigest() != TRAINEDDATA_SHA256: + raise RuntimeError( + f"Downloaded traineddata does not match pinned hash " + f"{TRAINEDDATA_SHA256}" + ) + data_path.write_bytes(contents) + return data_path + + +def ocr_ready(download=False): + """Whether OCR-dependent cases can run in this checkout.""" + if not ocr_libraries_available(): + return False + if traineddata_path().exists(): + return True + return download and fetch_traineddata() is not None + + +class FakeResponse: + status_code = 200 + text = "" + + +class PipelineRunner: + """Context manager that wires the pipeline up against a MEDIA_ROOT + directory and runs test cases through it.""" + + def __init__(self, media_root, use_ocr=True): + ensure_environment() + self.media_root = Path(media_root) + self.use_ocr = use_ocr + self.callbacks = [] + self._overrides = [] + + def __enter__(self): + # Imports deferred: pipeline modules read env vars at import time + # Django + from django.test.utils import override_settings + + # DocumentCloud + from documentcloud.common.environment import publisher + from documentcloud.common.serverless import error_handling, utils + from documentcloud.documents.processing.info_and_image import main as ii_main + from documentcloud.documents.processing.ocr import main as ocr_main + + self.publisher = publisher + self.utils = utils + self.ii_main = ii_main + self.ocr_main = ocr_main + + self.media_root.mkdir(parents=True, exist_ok=True) + self._settings_override = override_settings(MEDIA_ROOT=str(self.media_root)) + self._settings_override.enable() + + # Capture API callbacks instead of performing HTTP requests + self._original_request = utils.request + utils.request = self._record_callback + + # Never use pebble subprocesses: the queue and the callback recorder + # live in this process + self._original_use_timeout = error_handling.USE_TIMEOUT + error_handling.USE_TIMEOUT = False + self._error_handling = error_handling + + # Dispatch every topic through the in-process message queue + self.queue = deque() + self._original_tasks = dict(publisher.tasks) + for topic, function in [ + (ii_main.PDF_PROCESS_TOPIC, ii_main.process_pdf), + (ii_main.PAGE_CACHE_TOPIC, ii_main.process_page_cache), + (ii_main.IMAGE_EXTRACT_TOPIC, ii_main.extract_image), + (ii_main.OCR_TOPIC, ocr_main.run_tesseract), + (ii_main.ASSEMBLE_TEXT_TOPIC, ii_main.assemble_page_text), + (ii_main.TEXT_POSITION_EXTRACT_TOPIC, ii_main.extract_text_position), + (ii_main.REDACT_TOPIC, ii_main.redact_doc), + ]: + publisher.register_internal_callback(topic, self._enqueue(function)) + + if self.use_ocr: + preload_tesseract_libraries() + self._stage_ocr_data() + + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.publisher.tasks = self._original_tasks + self.utils.request = self._original_request + self._error_handling.USE_TIMEOUT = self._original_use_timeout + self._settings_override.disable() + + def _record_callback(self, redis, method, url, json_): + self.callbacks.append({"method": method, "url": url, "json": json_}) + return FakeResponse() + + def _enqueue(self, function): + def callback(data): + self.queue.append((function, data)) + + return callback + + def _drain(self): + while self.queue: + function, data = self.queue.popleft() + function(data) + + def _stage_ocr_data(self): + """Place the OCR language data where the pipeline downloads it from + (the `ocr-languages` folder of local storage).""" + languages_dir = self.media_root / self.ocr_main.OCR_DATA_DIRECTORY + languages_dir.mkdir(parents=True, exist_ok=True) + shutil.copy(TESSERACT_DIR / "tessdata" / "pdf.ttf", languages_dir / "pdf.ttf") + data_path = traineddata_path() + if data_path.exists(): + shutil.copy(data_path, languages_dir / data_path.name) + # The pipeline caches language data in TMP_DIRECTORY across + # invocations; clear it so each run uses the staged data + shutil.rmtree(self.ocr_main.TMP_DIRECTORY, ignore_errors=True) + + def doc_directory(self, case): + """The storage directory holding all of a document's files.""" + # DocumentCloud + from documentcloud.common import path + + return self.media_root / path.path(case["doc_id"]) + + def run_case(self, case): + """Run one test case through the pipeline. Returns the merged + database-facing metadata captured from the API callbacks.""" + # DocumentCloud + from documentcloud.common import access_choices, path + from documentcloud.common.environment import encode_pubsub_data + + doc_id = case["doc_id"] + slug = case["slug"] + settings = case.get("settings", {}) + + # Stage the input document where an upload would put it + doc_path = self.media_root / path.doc_path(doc_id, slug) + shutil.rmtree(self.doc_directory(case), ignore_errors=True) + doc_path.parent.mkdir(parents=True, exist_ok=True) + shutil.copy(case["input"], doc_path) + + self.callbacks.clear() + redis = self.utils.get_redis() + self.utils.clean_up(redis, doc_id) + + # Standard processing, as triggered by an upload + self.utils.initialize(redis, doc_id) + self.publisher.publish( + self.ii_main.PDF_PROCESS_TOPIC, + encode_pubsub_data( + { + "doc_id": doc_id, + "slug": slug, + "access": access_choices.PRIVATE, + "ocr_code": settings.get("ocr_code", "eng"), + "force_ocr": settings.get("force_ocr", False), + "ocr_engine": settings.get("ocr_engine", "tess4"), + } + ), + ) + self._drain() + + # Optional second phase: redaction of the processed document + if case.get("redactions"): + self.utils.initialize(redis, doc_id) + self.publisher.publish( + self.ii_main.REDACT_TOPIC, + encode_pubsub_data( + { + "doc_id": doc_id, + "slug": slug, + "access": access_choices.PRIVATE, + "ocr_code": settings.get("ocr_code", "eng"), + "redactions": case["redactions"], + } + ), + ) + self._drain() + + return self.collect_metadata() + + def collect_metadata(self): + """Merge the captured API callbacks into the final database-facing + metadata, keeping the raw callback sequence for reference.""" + database = {} + errors = [] + for callback in self.callbacks: + if callback["method"] == "patch": + database.update(callback["json"]) + else: + errors.append(callback) + return { + "database": database, + "callbacks": self.callbacks + [], + "errors": errors, + } diff --git a/documentcloud/documents/processing/tests/spec/make_corpus.py b/documentcloud/documents/processing/tests/spec/make_corpus.py new file mode 100644 index 00000000..cb794723 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/make_corpus.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 +""" +Build the input documents for the processing pipeline test spec. + +Each test case directory under `documents/` gets an `input/` PDF built +deterministically with PyMuPDF. This script only needs to be re-run when the +corpus itself changes — the inputs are committed to the repository so that the +golden outputs always correspond to a known set of input bytes. + +Usage: + python make_corpus.py [case ...] # default: all cases +""" + +# Standard Library +import sys +from pathlib import Path + +# Third Party +import pymupdf + +SPEC_DIR = Path(__file__).parent +DOCUMENTS_DIR = SPEC_DIR / "documents" + +LETTER = (612, 792) # US Letter in PDF points +A5_LANDSCAPE = (595, 420) + +# Text sized and spaced generously so the scanned pages OCR cleanly +SCAN_FONT_SIZE = 28 +TEXT_FONT_SIZE = 13 + + +def add_text_page(pdf, lines, size=LETTER, font_size=TEXT_FONT_SIZE): + """Add a page with an embedded text layer.""" + page = pdf.new_page(width=size[0], height=size[1]) + y = 90 + for line in lines: + page.insert_text((72, y), line, fontname="helv", fontsize=font_size) + y += font_size * 1.8 + return page + + +def add_scanned_page(pdf, lines, size=LETTER, dpi=150): + """Add an image-only page: the text is rasterized so there is no text + layer, forcing the page through OCR.""" + # Render the text onto a scratch page, then insert it as an image + scratch = pymupdf.open() + page = scratch.new_page(width=size[0], height=size[1]) + y = 120 + for line in lines: + page.insert_text((72, y), line, fontname="helv", fontsize=SCAN_FONT_SIZE) + y += SCAN_FONT_SIZE * 2 + png_bytes = page.get_pixmap(dpi=dpi).tobytes("png") + scratch.close() + + image_page = pdf.new_page(width=size[0], height=size[1]) + image_page.insert_image(image_page.rect, stream=png_bytes) + return image_page + + +def build_text_1page(pdf): + add_text_page( + pdf, + [ + "PROCESSING PIPELINE TEST SPEC", + "Case: single page with an embedded text layer.", + "This page must not be OCR'd; its text is extracted directly", + "from the PDF and the output PDF keeps the original text layer.", + ], + ) + + +def build_text_3page(pdf): + for number, word in enumerate(["one", "two", "three"], start=1): + add_text_page( + pdf, + [ + f"Page {word} of the multi-page text document.", + f"The page text files must contain this page {number} marker.", + ], + ) + + +def build_scan_2page(pdf): + add_scanned_page(pdf, ["SCANNED PAGE ONE", "NO TEXT LAYER HERE"]) + add_scanned_page(pdf, ["SCANNED PAGE TWO", "EVERY PAGE IS OCRD"]) + + +def build_mixed_2page(pdf): + add_text_page( + pdf, + [ + "Mixed document, page one has an embedded text layer.", + "Only the second page goes through OCR.", + ], + ) + add_scanned_page(pdf, ["MIXED PAGE TWO", "THIS PAGE IS SCANNED"]) + + +def build_force_ocr_1page(pdf): + add_text_page( + pdf, + [ + "FORCE OCR TEST DOCUMENT", + "This page has an embedded text layer, but the case settings", + "use force_ocr, so the pipeline must OCR it anyway.", + ], + font_size=SCAN_FONT_SIZE // 2, + ) + + +def build_mixed_sizes_2page(pdf): + add_text_page(pdf, ["Letter sized page.", "612 by 792 points."], size=LETTER) + add_text_page( + pdf, + ["A5 landscape page.", "595 by 420 points."], + size=A5_LANDSCAPE, + ) + + +def build_blank_1page(pdf): + pdf.new_page(width=LETTER[0], height=LETTER[1]) + + +def build_redact_2page(pdf): + add_text_page( + pdf, + [ + "Redaction test document, page one is untouched.", + "Only page two receives a redaction.", + ], + ) + add_text_page( + pdf, + [ + "Page two before redaction.", + "SECRET LINE THAT GETS REDACTED", + "Visible line under the redaction.", + ], + ) + + +BUILDERS = { + "text-1page": build_text_1page, + "text-3page": build_text_3page, + "scan-2page": build_scan_2page, + "mixed-2page": build_mixed_2page, + "force-ocr-1page": build_force_ocr_1page, + "mixed-sizes-2page": build_mixed_sizes_2page, + "blank-1page": build_blank_1page, + "redact-2page": build_redact_2page, +} + + +def main(argv): + names = argv or sorted(BUILDERS) + for name in names: + builder = BUILDERS[name] + input_dir = DOCUMENTS_DIR / name / "input" + input_dir.mkdir(parents=True, exist_ok=True) + pdf = pymupdf.open() + builder(pdf) + output = input_dir / f"{name}.pdf" + pdf.save(str(output), garbage=4, deflate=True, deflate_images=True) + pdf.close() + print(f"wrote {output}") + + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/documentcloud/documents/processing/tests/spec/test_spec.py b/documentcloud/documents/processing/tests/spec/test_spec.py new file mode 100644 index 00000000..aaa9aa4e --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/test_spec.py @@ -0,0 +1,72 @@ +""" +Validate the processing pipeline against the committed golden outputs. + +For every case under `documents/` that has an `expected/` directory, run the +real pipeline on the case's input document and compare everything it +produces — storage files and database-facing metadata — against the golden +copies. See README.md for the comparison rules and how to regenerate the +goldens after an intentional behavior change (`python generate.py`). + +Requires a reachable Redis (as the pipeline tests in CI already do). Cases +that need OCR are skipped unless the Git LFS Tesseract libraries and the +pinned eng.traineddata are present. +""" + +# Standard Library +import json +import shutil +import tempfile +from pathlib import Path + +# Third Party +import pytest + +# DocumentCloud +from documentcloud.documents.processing.tests.spec import compare, harness + +CASES = [case for case in harness.all_cases() if (case["dir"] / "expected").exists()] + + +def _case_id(case): + return case["name"] + + +@pytest.fixture(scope="module") +def ocr_ready(): + return harness.ocr_ready(download=False) + + +@pytest.mark.slow +@pytest.mark.parametrize("case", CASES, ids=_case_id) +def test_pipeline_output_contract(case, ocr_ready): + if case["needs_ocr"] and not ocr_ready: + pytest.skip( + "OCR unavailable: run git lfs pull --include " + '"documentcloud/documents/processing/ocr/tesseract/*" and ' + "provide eng.traineddata (see spec/README.md)" + ) + + media_root = Path(tempfile.mkdtemp(prefix="dc-processing-spec-")) + try: + with harness.PipelineRunner(media_root, use_ocr=ocr_ready) as runner: + metadata = runner.run_case(case) + assert not metadata[ + "errors" + ], f"pipeline reported errors: {metadata['errors']}" + + actual_dir = media_root / "actual" + shutil.copytree(runner.doc_directory(case), actual_dir) + with open(actual_dir / "metadata.json", "w", encoding="utf-8") as meta_file: + json.dump(metadata, meta_file) + + problems = compare.compare_case( + case["dir"] / "expected", + actual_dir, + case["slug"], + ignore_metadata_fields=(("file_hash",) if case.get("redactions") else ()), + ) + assert not problems, "\n".join( + [f"{case['name']} does not match its golden outputs:"] + problems + ) + finally: + shutil.rmtree(media_root, ignore_errors=True) From 0791cbf2c1e6cb55d7d127bce6b2c2c14ef82320 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 14 Jul 2026 17:05:52 +0000 Subject: [PATCH 2/4] Run OCR spec cases in CI and clean up lint Pull the Tesseract LFS libraries in the CI test job (only the ocr/tesseract directory, to avoid fetching the large LibreOffice bundle) so the OCR test spec cases run in CI instead of skipping. The pinned eng.traineddata is downloaded automatically on first use. Also fix pylint findings in the spec package and drop an unused compare_case parameter. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Le7iTGKrY5TmE4jL4GhnWU --- .github/workflows/test.yml | 5 +++++ documentcloud/documents/processing/tests/spec/README.md | 6 ++++-- documentcloud/documents/processing/tests/spec/compare.py | 6 +++--- .../documents/processing/tests/spec/generate.py | 2 +- documentcloud/documents/processing/tests/spec/harness.py | 4 +++- .../documents/processing/tests/spec/test_spec.py | 9 +++++++-- 6 files changed, 23 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c4fff926..fc06f8e1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -97,6 +97,11 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Pull Tesseract LFS libraries + # Only the OCR libraries, so the processing spec tests can run OCR + # cases; a full LFS checkout would also fetch the large LibreOffice + # bundle, which the tests do not need + run: git lfs pull --include "documentcloud/documents/processing/ocr/tesseract/*" - name: Install Python uses: actions/setup-python@v5 with: diff --git a/documentcloud/documents/processing/tests/spec/README.md b/documentcloud/documents/processing/tests/spec/README.md index 64f735e1..c4a0198a 100644 --- a/documentcloud/documents/processing/tests/spec/README.md +++ b/documentcloud/documents/processing/tests/spec/README.md @@ -82,8 +82,10 @@ pytest documentcloud/documents/processing/tests/spec/test_spec.py ``` This runs in CI alongside the other tests (it needs the Redis service the -existing pipeline tests already use). Cases that need OCR are skipped unless -the OCR runtime is available (see below); the embedded-text cases always run. +existing pipeline tests already use). The CI workflow pulls the Tesseract +LFS libraries so the OCR cases run there too; in a local checkout without +them, OCR cases are skipped and the embedded-text cases still run. The +pinned eng.traineddata is downloaded automatically on first use. To check outside of pytest: diff --git a/documentcloud/documents/processing/tests/spec/compare.py b/documentcloud/documents/processing/tests/spec/compare.py index bf2fdf9e..5df947a7 100644 --- a/documentcloud/documents/processing/tests/spec/compare.py +++ b/documentcloud/documents/processing/tests/spec/compare.py @@ -38,7 +38,7 @@ PRESENCE_ONLY_SUFFIXES = (".index", ".pagesize") -def compare_case(expected_dir, actual_dir, slug, ignore_metadata_fields=()): +def compare_case(expected_dir, actual_dir, ignore_metadata_fields=()): """Compare two document directories. Returns a list of human-readable problems; an empty list means the directories match. @@ -63,7 +63,6 @@ def compare_case(expected_dir, actual_dir, slug, ignore_metadata_fields=()): expected_dir / name, actual_dir / name, name, - slug, ignore_metadata_fields, ) ) @@ -79,7 +78,8 @@ def _relative_files(directory): } -def _compare_file(expected, actual, name, slug, ignore_metadata_fields=()): +def _compare_file(expected, actual, name, ignore_metadata_fields=()): + # pylint: disable=too-many-return-statements if name == "metadata.json": return _compare_metadata(expected, actual, name, ignore_metadata_fields) if name.endswith(PRESENCE_ONLY_SUFFIXES): diff --git a/documentcloud/documents/processing/tests/spec/generate.py b/documentcloud/documents/processing/tests/spec/generate.py index a4bb9d7e..b8ccb809 100644 --- a/documentcloud/documents/processing/tests/spec/generate.py +++ b/documentcloud/documents/processing/tests/spec/generate.py @@ -53,6 +53,7 @@ def snapshot(runner, case, metadata, destination): def main(argv): + # pylint: disable=too-many-locals parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("cases", nargs="*", help="case names (default: all)") parser.add_argument( @@ -99,7 +100,6 @@ def main(argv): problems = compare.compare_case( case["dir"] / "expected", scratch, - case["slug"], ignore_metadata_fields=( ("file_hash",) if case.get("redactions") else () ), diff --git a/documentcloud/documents/processing/tests/spec/harness.py b/documentcloud/documents/processing/tests/spec/harness.py index f4d8ff27..7796b0ae 100644 --- a/documentcloud/documents/processing/tests/spec/harness.py +++ b/documentcloud/documents/processing/tests/spec/harness.py @@ -179,6 +179,8 @@ class PipelineRunner: """Context manager that wires the pipeline up against a MEDIA_ROOT directory and runs test cases through it.""" + # pylint: disable=too-many-instance-attributes + def __init__(self, media_root, use_ocr=True): ensure_environment() self.media_root = Path(media_root) @@ -242,7 +244,7 @@ def __exit__(self, exc_type, exc_value, traceback): self._error_handling.USE_TIMEOUT = self._original_use_timeout self._settings_override.disable() - def _record_callback(self, redis, method, url, json_): + def _record_callback(self, _redis, method, url, json_): self.callbacks.append({"method": method, "url": url, "json": json_}) return FakeResponse() diff --git a/documentcloud/documents/processing/tests/spec/test_spec.py b/documentcloud/documents/processing/tests/spec/test_spec.py index aaa9aa4e..16d0c903 100644 --- a/documentcloud/documents/processing/tests/spec/test_spec.py +++ b/documentcloud/documents/processing/tests/spec/test_spec.py @@ -24,6 +24,10 @@ # DocumentCloud from documentcloud.documents.processing.tests.spec import compare, harness +# Pytest fixtures are injected by parameter name +# pylint: disable=redefined-outer-name + + CASES = [case for case in harness.all_cases() if (case["dir"] / "expected").exists()] @@ -33,7 +37,9 @@ def _case_id(case): @pytest.fixture(scope="module") def ocr_ready(): - return harness.ocr_ready(download=False) + # Downloads the hash-pinned eng.traineddata on first use (a few MB); + # once cached under spec/.cache/ no network is needed + return harness.ocr_ready(download=True) @pytest.mark.slow @@ -62,7 +68,6 @@ def test_pipeline_output_contract(case, ocr_ready): problems = compare.compare_case( case["dir"] / "expected", actual_dir, - case["slug"], ignore_metadata_fields=(("file_hash",) if case.get("redactions") else ()), ) assert not problems, "\n".join( From 7353e79b8fb0c81f7bfc6bd91a861ff297d6ca3d Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 18 Jul 2026 14:43:33 +0000 Subject: [PATCH 3/4] Address review: compare callbacks, add error and batch cases - Compare the full API callback sequence in metadata.json, not just the merged database fields: order, methods, URLs, and payloads must match. page_spec values are compared decoded, file_hash values are loosened to presence + SHA-1 shape for redaction cases (the redacted PDF is rewritten non-reproducibly), and storage bucket prefixes are stripped from error messages. This makes regressions like redaction resending page_spec or dropping its file_hash update detectable. - Add corrupt-1page: an unparseable PDF must produce an error POST to the API and no output files. The runner neutralizes the local sentry stub's re-raise so the error path completes as it does in production. - Add text-4page: four pages exceed TEXT_POSITION_BATCH (3), exercising the multi-batch flush path for text position extraction. - ocr_libraries_available now verifies the libraries actually load (they are Linux x86-64 builds), so non-Linux checkouts skip instead of error. - CI: cache the pinned eng.traineddata and set DC_SPEC_REQUIRE_OCR so an unavailable OCR runtime fails the OCR cases instead of skipping them. - Keep the actual output tree on test failure for easier diffing; default needs_ocr/expects_error in load_case; document access levels, remaining error paths, and the Linux platform pinning as known gaps. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Le7iTGKrY5TmE4jL4GhnWU --- .github/workflows/test.yml | 8 ++ .../documents/processing/tests/spec/README.md | 21 +++- .../processing/tests/spec/compare.py | 101 ++++++++++++++++-- .../spec/documents/corrupt-1page/case.json | 8 ++ .../corrupt-1page/expected/corrupt-1page.pdf | Bin 0 -> 98 bytes .../corrupt-1page/expected/metadata.json | 21 ++++ .../corrupt-1page/input/corrupt-1page.pdf | Bin 0 -> 98 bytes .../tests/spec/documents/text-4page/case.json | 7 ++ .../text-4page/expected/metadata.json | 33 ++++++ .../expected/pages/text-4page-p1-large.gif | Bin 0 -> 15746 bytes .../expected/pages/text-4page-p1-normal.gif | Bin 0 -> 10082 bytes .../expected/pages/text-4page-p1-small.gif | Bin 0 -> 2019 bytes .../pages/text-4page-p1-thumbnail.gif | Bin 0 -> 479 bytes .../expected/pages/text-4page-p1-xlarge.gif | Bin 0 -> 30887 bytes .../pages/text-4page-p1.position.json | 1 + .../expected/pages/text-4page-p1.txt | Bin 0 -> 96 bytes .../expected/pages/text-4page-p2-large.gif | Bin 0 -> 15933 bytes .../expected/pages/text-4page-p2-normal.gif | Bin 0 -> 10145 bytes .../expected/pages/text-4page-p2-small.gif | Bin 0 -> 2027 bytes .../pages/text-4page-p2-thumbnail.gif | Bin 0 -> 477 bytes .../expected/pages/text-4page-p2-xlarge.gif | Bin 0 -> 32128 bytes .../pages/text-4page-p2.position.json | 1 + .../expected/pages/text-4page-p2.txt | Bin 0 -> 96 bytes .../expected/pages/text-4page-p3-large.gif | Bin 0 -> 16022 bytes .../expected/pages/text-4page-p3-normal.gif | Bin 0 -> 10287 bytes .../expected/pages/text-4page-p3-small.gif | Bin 0 -> 2040 bytes .../pages/text-4page-p3-thumbnail.gif | Bin 0 -> 479 bytes .../expected/pages/text-4page-p3-xlarge.gif | Bin 0 -> 32064 bytes .../pages/text-4page-p3.position.json | 1 + .../expected/pages/text-4page-p3.txt | Bin 0 -> 98 bytes .../expected/pages/text-4page-p4-large.gif | Bin 0 -> 16077 bytes .../expected/pages/text-4page-p4-normal.gif | Bin 0 -> 10173 bytes .../expected/pages/text-4page-p4-small.gif | Bin 0 -> 2029 bytes .../pages/text-4page-p4-thumbnail.gif | Bin 0 -> 481 bytes .../expected/pages/text-4page-p4-xlarge.gif | Bin 0 -> 31884 bytes .../pages/text-4page-p4.position.json | 1 + .../expected/pages/text-4page-p4.txt | Bin 0 -> 97 bytes .../text-4page/expected/text-4page.index | Bin 0 -> 1463 bytes .../text-4page/expected/text-4page.pdf | Bin 0 -> 2784 bytes .../text-4page/expected/text-4page.txt | Bin 0 -> 393 bytes .../text-4page/expected/text-4page.txt.json | 1 + .../documents/text-4page/input/text-4page.pdf | Bin 0 -> 2683 bytes .../processing/tests/spec/generate.py | 6 +- .../processing/tests/spec/harness.py | 28 ++++- .../processing/tests/spec/make_corpus.py | 39 +++++-- .../processing/tests/spec/test_spec.py | 49 +++++---- 46 files changed, 281 insertions(+), 45 deletions(-) create mode 100644 documentcloud/documents/processing/tests/spec/documents/corrupt-1page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/corrupt-1page/expected/corrupt-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/corrupt-1page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/corrupt-1page/input/corrupt-1page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/case.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/metadata.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4-large.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4-normal.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4-small.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4-thumbnail.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4-xlarge.gif create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4.position.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.index create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.pdf create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.txt create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.txt.json create mode 100644 documentcloud/documents/processing/tests/spec/documents/text-4page/input/text-4page.pdf diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fc06f8e1..6596c127 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -102,6 +102,11 @@ jobs: # cases; a full LFS checkout would also fetch the large LibreOffice # bundle, which the tests do not need run: git lfs pull --include "documentcloud/documents/processing/ocr/tesseract/*" + - name: Cache OCR language data + uses: actions/cache@v4 + with: + path: documentcloud/documents/processing/tests/spec/.cache + key: processing-spec-tessdata-7d4322bd - name: Install Python uses: actions/setup-python@v5 with: @@ -117,3 +122,6 @@ jobs: PG_USER: test PG_PASSWORD: ${{ secrets.PG_PASSWORD }} DATABASE_URL: postgres://test:postgres@127.0.0.1:5432/test + # OCR is expected to work in CI: fail the processing spec's OCR + # cases instead of skipping them if the runtime is unavailable + DC_SPEC_REQUIRE_OCR: "1" diff --git a/documentcloud/documents/processing/tests/spec/README.md b/documentcloud/documents/processing/tests/spec/README.md index c4a0198a..8623fce5 100644 --- a/documentcloud/documents/processing/tests/spec/README.md +++ b/documentcloud/documents/processing/tests/spec/README.md @@ -65,12 +65,14 @@ crunching all run for real. | --- | --- | --- | | `text-1page` | 1 | Baseline: embedded text, no OCR, full output file set | | `text-3page` | 3 | All pages get all artifacts; concatenation order | +| `text-4page` | 4 | More pages than `TEXT_POSITION_BATCH` (3): multi-batch flush path | | `scan-2page` | 2 | Image-only pages: OCR text, grafting, OCR positions | | `mixed-2page` | 2 | Per-page routing: page 1 `ocr: null`, page 2 `ocr: "tess4"` | | `force-ocr-1page` | 1 | `force_ocr` overrides embedded text (`ocr: "tess4_force"`) | | `mixed-sizes-2page` | 2 | Differing page dimensions; page_spec encoding | | `blank-1page` | 1 | Blank page is OCR'd; produces `"\f"` text and `[]` positions | | `redact-2page` | 2 | Redaction path: only the dirty page is reprocessed; page_spec is not resent | +| `corrupt-1page` | — | Error path: an unparseable PDF produces an error POST to the API and no output files | Inputs are built deterministically by `make_corpus.py` and committed, so the goldens always correspond to known input bytes. @@ -133,7 +135,7 @@ Some pipeline output is intentionally or unavoidably non-reproducible, so | `*.gif` | exact bytes; on mismatch, pixels are diffed and reported | | `*.pdf` | semantic: page count, page dimensions, per-page text layer. Bytes are not compared — the OCR grafter writes uuid-named XObjects and pikepdf regenerates the document ID | | `*.index` | presence only (gzip bytes embed a timestamp; not part of the contract) | -| `metadata.json` | `page_count` and `status` exact; `page_spec` compared decoded (segment order follows Redis set iteration and is not deterministic); `file_hash` exact, except for redaction cases where the final PDF is rewritten non-reproducibly | +| `metadata.json` | the merged database fields **and** the full API callback sequence (order, methods, URLs, payloads). `page_count` and `status` exact; `page_spec` compared decoded (segment order follows Redis set iteration and is not deterministic); `file_hash` exact, except for redaction cases where the final PDF is rewritten non-reproducibly — there the callbacks still assert that a well-formed SHA-1 was sent, just not its value. Storage bucket prefixes in error messages are stripped (the bucket name varies by environment) | Behaviors of the current pipeline that the goldens capture and that any reimplementation would need to match (or knowingly change): @@ -159,6 +161,17 @@ reimplementation would need to match (or knowingly change): `storage.async_download`, which the local storage backend does not implement - **Bulk import**, **set_page_text**, revision control copies - **Non-English OCR** — needs additional pinned traineddata files -- **Large documents** (image batching across multiple messages) — would bloat - the repository; `IMAGE_BATCH` behavior is still exercised, just with small - page counts +- **Large documents** — every case fits in a single `IMAGE_BATCH` (55 pages); + multi-batch image extraction is not exercised (text-position batching is, + via `text-4page`, and OCR batching via `scan-2page` since `OCR_BATCH` is 1) +- **Access levels** — all cases run with `access: private`; local storage + ignores ACLs, so a regression in how `access` propagates between pipeline + messages would not be caught +- **Error paths beyond an unparseable input** (`corrupt-1page`) — e.g. + OCR failures, storage failures, and the retry queue + +Platform note: the GIF goldens are byte-compared and therefore pinned to the +Linux builds of pdfium/Pillow used in CI. Run the suite on Linux (or in the +dev container); a macOS run will report pixel deltas, and the bundled +Tesseract libraries only load on Linux x86-64 (OCR cases skip elsewhere — +or fail if `DC_SPEC_REQUIRE_OCR` is set, as it is in CI). diff --git a/documentcloud/documents/processing/tests/spec/compare.py b/documentcloud/documents/processing/tests/spec/compare.py index 5df947a7..909beea3 100644 --- a/documentcloud/documents/processing/tests/spec/compare.py +++ b/documentcloud/documents/processing/tests/spec/compare.py @@ -23,14 +23,18 @@ not part of the output contract; the index is a gzip whose bytes embed a timestamp) -- ``metadata.json`` the database-facing fields must match - exactly: page_count, page_spec, - file_hash, status +- ``metadata.json`` the merged database fields and the full + API callback sequence (order, methods, + URLs, payloads), with page_spec decoded, + file_hash loosened to presence+shape for + redaction cases, and bucket prefixes + stripped from error messages """ # Standard Library import io import json +import re from pathlib import Path POSITION_TOLERANCE = 1e-4 @@ -104,9 +108,27 @@ def _compare_bytes(expected, actual, name): def _compare_metadata(expected, actual, name, ignore_fields=()): + expected_metadata = json.loads(expected.read_text()) + actual_metadata = json.loads(actual.read_text()) + problems = _compare_database( + expected_metadata["database"], + actual_metadata["database"], + name, + ignore_fields, + ) + problems.extend( + _compare_callbacks( + expected_metadata.get("callbacks", []), + actual_metadata.get("callbacks", []), + name, + loose_file_hash="file_hash" in ignore_fields, + ) + ) + return problems + + +def _compare_database(expected_database, actual_database, name, ignore_fields=()): problems = [] - expected_database = json.loads(expected.read_text())["database"] - actual_database = json.loads(actual.read_text())["database"] for field in sorted(set(expected_database) | set(actual_database)): if field in ignore_fields: continue @@ -129,6 +151,66 @@ def _compare_metadata(expected, actual, name, ignore_fields=()): return problems +SHA1_HEX = re.compile(r"^[0-9a-f]{40}$") +# Error messages may embed storage paths whose bucket prefix varies by +# environment; compare from the documents/ segment on +BUCKET_PREFIX = re.compile(r"[^\s']*documents/") + + +def _normalize_callback(callback, loose_file_hash): + """Normalize one captured API callback for comparison. + + - page_spec values are decoded (segment order is not deterministic) + - file_hash values are replaced by a placeholder when loose_file_hash is + set (redaction rewrites the PDF non-reproducibly), so the sequence + still asserts that a well-formed hash was sent, just not its value + - storage bucket prefixes in error messages are stripped + """ + json_ = dict(callback.get("json", {})) + if "page_spec" in json_: + json_["page_spec"] = _decode_page_spec(json_["page_spec"]) + if ( + loose_file_hash + and isinstance(json_.get("file_hash"), str) + and SHA1_HEX.match(json_["file_hash"]) + ): + json_["file_hash"] = "" + if isinstance(json_.get("message"), str): + json_["message"] = BUCKET_PREFIX.sub("documents/", json_["message"]) + return { + "method": callback.get("method"), + "url": callback.get("url"), + "json": json_, + } + + +def _compare_callbacks(expected_callbacks, actual_callbacks, name, loose_file_hash): + expected_normalized = [ + _normalize_callback(callback, loose_file_hash) + for callback in expected_callbacks + ] + actual_normalized = [ + _normalize_callback(callback, loose_file_hash) for callback in actual_callbacks + ] + if expected_normalized == actual_normalized: + return [] + problems = [] + if len(expected_normalized) != len(actual_normalized): + problems.append( + f"{name}: callback count differs: expected " + f"{len(expected_normalized)}, got {len(actual_normalized)}" + ) + for index, (expected_callback, actual_callback) in enumerate( + zip(expected_normalized, actual_normalized) + ): + if expected_callback != actual_callback: + problems.append( + f"{name}: callback {index} differs: " + f"expected {expected_callback!r}, got {actual_callback!r}" + ) + return problems or [f"{name}: callback sequences differ"] + + def _decode_page_spec(page_spec): """Decode a crunched page_spec string into a page number to dimension mapping (e.g. "612.00x792.00:0-1" -> {0: "612.00x792.00", 1: ...}).""" @@ -262,8 +344,13 @@ def _pdf_summary(pdf_path): def _compare_pdfs(expected, actual, name): - expected_summary = _pdf_summary(expected) - actual_summary = _pdf_summary(actual) + try: + expected_summary = _pdf_summary(expected) + actual_summary = _pdf_summary(actual) + except Exception: # pylint: disable=broad-except + # Unparseable PDF (e.g. the corrupt-input error case): fall back to + # comparing the raw bytes + return _compare_bytes(expected, actual, name) problems = [] if len(expected_summary) != len(actual_summary): return [ diff --git a/documentcloud/documents/processing/tests/spec/documents/corrupt-1page/case.json b/documentcloud/documents/processing/tests/spec/documents/corrupt-1page/case.json new file mode 100644 index 00000000..8cabf85d --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/corrupt-1page/case.json @@ -0,0 +1,8 @@ +{ + "doc_id": -9110, + "slug": "corrupt-1page", + "why": "Error path: an unparseable PDF must produce an error POST to the API and no output files.", + "settings": {"ocr_engine": "tess4", "force_ocr": false, "ocr_code": "eng"}, + "needs_ocr": false, + "expects_error": true +} diff --git a/documentcloud/documents/processing/tests/spec/documents/corrupt-1page/expected/corrupt-1page.pdf b/documentcloud/documents/processing/tests/spec/documents/corrupt-1page/expected/corrupt-1page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bb64917b140fe1ac4172c7b60f54bb89c52d5475 GIT binary patch literal 98 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-normal.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e0a605655ff9f1826f9ae44a6e1ee5c7a253d90 GIT binary patch literal 10082 zcmWldXGPnVz2h z`}gmkKYxDz{yjA{_3PKKpFe+2PEJltO#Jxq+S9B>FJTn<=x%gU0q$Bot+&W9qsMyZEbC>t*tVdtfi%;xw*Nisj0EC@%8K14Gj(T z_4Th_y?XibWnEoeZEbB$P0foJFRH7ntE#G`Qt9*O&nqh{D=I3UJ$qJOUS3vK_Vnq~ z($dl=Po6w}{J5l~`SRsUmoAA! zqO7c}ix)3uW@cWvaN+#<^XJZ;JA3x5P$)ce=1fLL#_7|i)6>&WojP^$|NGy@ zjT<*?*sy;6`gQBptzElz&6+h_E_e0n)vH#mTDfwizrX*A6)XJw{FX0Y?(6I8~3^;o;%#?(XL1#^G>WU0s(gTjt{8;_U3abm`J1OO`BNyx7UfY0;uZj*gBF z4i5JA_I7r5wzjr5Ha2WF`@jGGv$nQgxNxDBmDPd;3oI=y=g*&SVPP?E-aK=2b2BqD zQ&UqD6BA=&V$QXlP(yps%m5r>8e}?p$46T^$`ACX=bHtvzSX94##^O-)S= z4Gnd5bu~3L1VI=K1`NY=I-N$NQK?i4g+eBiNhA`HNF)#lcsw45!(p*l2!b#e3;@9D zpTPg$0*9mm7?Pf^L|m0b(y$DACCPn}ikSFa@qLh2dx~kdv;WnD>o3o+JWlE@FV3$& zZ?W!HPn!%RhAYb--e}5pI`FZ-{^8A*Yn&vCzTcz5*6Y6KErS~#6}8{wUiZuK zE4kHqJK*8YfrgUX-S>GfPU^3Ce5dDOWc#h)*N^Y^J>d^G1feLC3sKa>;M=F=hVAu53}QJzp0_Fu*9!GhyCqTerW3RgFMvJgrFyP zGF-6gf$BOUo<`}{dpEQqqt~)&9wV0^$?#TMg4b*g5Z-wsGQ|KQ2m4WR0EbVST89PM z(@6q?OUEz?7>}J_P7Il9XOJ$l#ECz4`tX_gvHb6Nt9Ln>qtPS#?Em5 zS7#J!H~LBq!^Z+%jq3p=TJQRnrl@v3a}Y^#Xh7IfTUm_~VyoC_y(2&#pR@---&$;J ztg2QoJ0#*XET#f*(#2n_Ah|98fV#VQ#>5MIcH+PZIG=1jCbpg-aD>pBwpB#%jKeSp zHntSzVlx*B^GP9oAM!C2!3R(CEoH*|+&_-88#sI^>bytvGdmZWR&~|7E|CSST#&l< zPZ658KXCs28wR*t_oWqqMGtPcgcaSSM*EFDlzA`s{HSB&inXXO0=+U)nYQ~FB?QUL z9zZdcsP3tn%fkG80<-XDf&P9UVDPBe9oRlI{sNkf{Q_^66aMz!&#aXB;hW0>i=Jkx zBOL9E%JNiJWyx)2ei6i5Isf_ZU1P=1DyesJ#|?H}E;rTCG}X=yvf`s^6Wi*FtY7K^ zY@VK)6c`epM!l>_u`GU0Zg>9hk~udRS(*yCQc0z4*eh2jy`7&s-S8r??4&1!W1!mI znxL+_14(zU1mb#^^r7n0^c;fxwQE8nO56j+lxNKJr7BsI9T@w@(9|7~WtaoD9ThB_ zUPr|GOxq=bHuSo#smf}MwqO;O*Er;Mv8&oulqRXRoeJP3I2QnRjq6sRtaasSvb!)1m=uzX{@t%$`k5Sk5w-5W5rFeqlkWiKYh2&3HC}raQAuU3Uz8OMe1? z-(+$O52Wt^iYtpl2_py*qxvYGM_2IluL1xgM)v^zgGLwPi~DIqNNB_u0*e=}+u0b? zply7RmeS*QJ;ReG#e5h`1|P4J5GiZ!CoUlAg*hZ%*nYI6Ay;?*TfhtXdUh@5{Fg@RN-tv0C!0+cojrrz_>g!h>`F>tZE3oic-mv!a_X~yo z1(yG-Z`fG&JyViiU=^|abztxJi=~YP)`#j}Z~5~*OG>-JPF>y@s{2Fq%KwIKR(<34 zB|k37(r?(`T;8-Z@W*9&;|<3r^-X(^{K!_&ZaTeO-n{?vk1J#TH zbbi0Q&VlcEc9J@Yi(9T$BiYEMcmW3*5CB&ycIZkE1>Dt#wQJ(_l`{7 z=Fx8ly!7iTzC3v+a^>y7?uM?%Ws`ULr*8+n_v?9x;$Io&4{;M9)`X}fq|YCZ*rR*eYw_1@DTrPyy)cPo;MdFpj#{- zGOlZ}uF@E5Y}d0Li-HxZ{B5?=>U*k(2v_oQ8=vGYyjZ?A*)miA)FYzXmu4Up1Rys& z^YNP=4$TRY^*)Hi9I$dHVM&MWc>pI=4>=Nh&0{o)4hp@k2n1T+4 zA%{t_JBR_B<#`A0PT_&K8$Ge63Yu(cp%SX;-{Y!vo>9&*eySx>KYHMx-wCdYA7_?P zJZUAC^pG$73_Zu;IoP6VS9?xk{0N5?IYlG`aQfnJDxjqKun7CpYd^n0uxf-u%hWOw z8ewSVR4RtBmN3^J0ed83c#RE0d*+4#z8>=Fge@ftO}2GMZbE?#1H=x^#jdGxjp1Hn zkZ>w|r-)GnwX%1g~$}M3moXhHFU1N)Fknm&GJ2ms|fFu9R93aI`C~z*X zScvsA57t&i>h0u-(1cjXpI_($V}y_k09qE0HU0xa>KD>TC0mZV*06*cyIa>|+zATY z+HF8H;V@L>=?Fk_9FGZ@Og+rhgOmjB_2>?vnA5<40k6u?QiYJ1;~215Hr!*via|*p zX~w%^Nsv)u8Sy7L>Kn>xV$ao_V)K~{wU*!UG zh=gl1ms;O72E5B#8Out*I z`Yk(CIdOCK%*V~DKk}B!pHEt5z8qEkRWP2bre3a|{hqCw9$WqVPj}1g&vMm_^33z; z_p4QZ`c$)1Ezf6vwWwzQs#Ji9LQW_y042ntBoRs}MQL&ro<}+N zE=K6nd;(CyF)To4fhhLL>nz4oKzpvFs>FmX>j)D71MvZ*BzbM5K1BeL4ekP3(=hxL zp*?5OR6=~JZRjT+fH>!J5jsXmmT`BassoOU@gD+wWDFBFz=}hdD*jTu4(%z|Q9cJ8 z5yCh=_{t(;xo3?P3}+NlaSpo67}FZ`t87rtWYL5$mjy^Hkj#ZKwh$_$)bbgnl8Aep z%~%=sFM`=6WmGDuQrUTRPbNG}_#y#VA$>?pt&&k&*pZlGl1fU9w*c9ab1%ZdIERQ8 z14xMfEOZic&(X<@2pRr|1YB@LvJm?4T1o?A{#S^35K7BK7T72l^Ti>x3aayR26}*6 z$~ik{KF^MQDEq`Qfe}%zIN2O(oF;}lrSv!nxtzn?BZlAeX~kl?;4N;D2ft&{?GUSi zx0nhAJp3=UB#?_N6XcTDs|a8d8y@AuuVrq}!l61DJj{WUiQpvnVw47;0O}-)`;P@z zrePJ5zy(6uN99#k&wN2Hp_z3!RtXPF;QJg*K`ypm3M<6KMv385nZu$k@QzJ+#f2NV z?&Bt~TtdGsB)pNj`YP$~`1I=tLkEX#7Q(|Ucs*hZq?l$lgL;wJTLhQzFjy&Nrze0E zR0$h60Qjx=#EWRsI2-O}k?YX#&0KgCh3ilVGQxIp;1Pso$Tf&(F|NKPRlLRZiBH6+ zlc5LD5Z`bvO8v}&Ke33=x13?)tMR^+2|xf6I1|n2&Vt;O(NStZgP#tozF|20jEnzE zIk%+f>7&EfwNs5kis0O$y;ViBc>vD=bihdE01_`BNQj>$@VGbzBPQ3P0E0pb7CuS| zzf+Jaby#=VlokYj$0lxU$B**hF%~ud63AAtzD%D4hP&bE~upnsOZ54jki#0{a?rRS-aCD;xwqml!0r8Jj%9F9ZzjKJec z>Rg0nkI=_uaHSZtQw%%UgOfZmWJ7q*yK@)i%}1$wr1Z}yof;ZAZA85(fkyzb@+`K_GdDh*4zEz$Dc zWwN<=qX&LSD9IHApA%&N+a$pne804yV2$o^3Hh!PRszyi8LX7iSO_bC18bdvQ3|*v zrF>z*R3+W+9C*N^(4;|wLP;Sv-BdvB3q$p}90Q6-@~)nPRuq|=MRIzFdKLDrlPU^c^ig<%3pSE2Z$DGPk13=0(k zTyU7(fHA{7T>wJr*oKQIsHN&lfP~s6ChUfI%`PQ0F5DrHsd1 z(i#cnDw!e^AJ!y;`(kgvrj`RRz$Vk@0}YfBAjGJoSZED2!@><>K@&H6@j=?%AB4X` zY6=^l&!>l+gUhr{2SMo%B^E2myu_lDlyISpuvbRdg5pS0{DkyS0GE*@!p3vxDj8l* z00-Xjr}(E8h z3AA0@=V4NuwhS{Pd3bHDt{ECTI9%l22^OH7RCUwl;!`AcS^W?#sVwz{88GLcURwjD z2Ou!(Fzx~7wpP)eLYHf$r=W8w&|6Sw3l>N*&{kKre7t5;`H#L$-p1d&3a^Nz-gAi=k}1SynM2+-0Kt!Yhf`%`czG?$A^ z-ia_jN4A#+Qd;NhiJ|8quj~EKRYpOh{zZBNtp+o#Ed4fPmp0SjHuJbPi<~ygiZ-i( zHtU%-wtl;MaEEtXhi^`YUqy%iK*y?? z4z7OZT9?lC!JQl9Isn+Uby;aeBXQ21qOs_=0uh^yUQE=bm zxW3YyzOstGX9IneGksG1{%V*0n&AGrxc*l;{S6iUjRXD7GyO9Cfi{bYYGy#8KRDzvI1)VgE^crvXYgai;P}AcmzhDO{+sVEZzh7@{ET}umGkCL z#hdAYH?uQufPn&9roe4c5UjOCmd&O)ilq-W-??(wHQ})6aSG#Ju)v0-Vv)}P@+}#o zg@swV?p5PCd+fTQn$8867Y#v4ho$f5!X{3U5)i=z+AN9<0>WOnnpxYHse{mJ;)q-0 zw7VMj#W2ld=&Sl>^EN1-jd>R}|60~2ACxQzLegx(9wB3ecjMKF!0fD{$~7bTLzepM z4Ad0l#j>FfB#^*nsG)$uGMkh+uu<9v4m`%&=XQ?pUIM@7kxC_DHe%XmDJE^bo?{GF3C912yV3@O05@EM1> z^miO;haS+BQOJEX!NyXI5ci(T=#b*LF<0NQ$z%jrv*~{^U=fSHw~mr0gL@Sx3tB-1 zLOybszFaYvsw98p-Mp(9aj&L-QqYfcY0MN%u@oK`(xTVuPOIbEIE;r9UI2hU3*l4j z&}J^C<2Ee{!ABmY*hW|e@aZEgst|<(Zrm8-!`h$HO4uLjlrmIV352AZQjbC&X&f-} zC0IFN405WsrjzfK(S2Bm(E7tC$u>PP^*5VVqFPfv2L{Kaj8ay%Ov$*%1w=8S)&lvW zB!GY4!U`$l?vLT`U3-whsJQfNGz_Yug_EgX=14hrR|c{bQiFa;0<$j}*2ADz`0ZR| zkhP4_;g36FjJPWqYTOgr5mlb6vw)KDrNHAp8(FVpXbXR?ddm36I(}cYq9|ca6Xcb| zX#f%MmtdL>0U5p{&EE$yXCx8O?iCvc2O1fZ$oKuF|o6sa|#{E-bii(xPI0gw$wR3f=!1KL4Zz-CAB) z4(I#`}z2P)sq7t@Uhf`B}UOTtswS@BLYwiI5KfS?H{63(@2~<5=IQ#fp0&;9@R? z&qL{PYGaM%>%PNTI`c7-sGB^rH284;<4f*t0IX5@V%UJwZin$aVVS1w0}?U*9T@J$ zTce8D?b4ccVhzq#e;LF?IDR_7>X((jeT+6pkDr%5vB1-o!88Ip2Ous$RkycZpZP#y z^Q8SJD&kZGgPPOE!0!-3K1_Q zdM8E!_U~@xkq%6|VbEP1H9up*tAA)xllj(%0J_wYG4zS4n>rwL>g8E_itoH@40ZNR zkvf|@VrVS5<(nR#&t{#9Z!2XHqKj?NK2gY{9+#`}QsRvt zpn`};^A%{+&LUP)$YV85t&P26*l;V5RbQi;hni=ekk(*8Xv3u{$bR zDGdn64S7-iDZ|TgQ+QVR<4qCQk{x@8a2CF$^u0n}9vK(=HUV?a6Q}!?z;{c|J!V2d z5gvzQJaFV_Rw1;->23dDo7r1@PnxbcP+{pLE;zXP<2?bB@Bd`c&XzqK0{rDPJ%yw+ zJ_$Tqf))Dz0a0x6^POX9!#LkD0IppWMkEZbLPNGH2!$xf(-pai6V`v(i^)?LBEf(y zGP?gP%~pX|Px0$cHZ3n#B%cV|9BX_^m1@ZfLAFOq2Tr}oDNMvUUv%94;H7!_?uRYj zo67_V8shsW2qbCZKd3a%U=1SMCw|;LyXWih!J(B-&yC={ylYx9<@|$vvkRYpnVNk) z*9IsLS=3D~Lp2UdqkKd((`>6K#rMa~{8wkK`#%dX`=-Ai-SFf|x!mLZW~UeJbuNbn z4!y59^ybp$%@c1@ul?i?o$*j>smqRhxOubk$fx@+mmU55mO$mZP+l73$$k42;f*gLo>k5L4*MgBQFRD>xFANKqE@4 zFw=e+b8Vb<$ z6COnM!UPvu2yj)JXe^NcXQgh^9#Ik~D;y6mq5!?=ZEA*cw&mV zxfSyObIj+CdIMLtJHVJ6TbN)A7<)B6bZSYduI3!gjg9jiAw*SYS?aAB0YceWk-Mvf zGJORN*iqAnbM-js@qDa?nJA4Ns0PfGCU^{|+LZ-TV|WC+TqMh8l@Yi!m8Z24&#@XZ zN)Kas=%~i3J;%c+CkrqJ>Ld+PaGL5>Pu1&YVKytY4}0`$7t#yJ4@ zB^OVdP9m1uU|dsJntApwG*(;JS(v*gdej)}Oo)oKWM@Hr>^3#LFqJW81^l@tm@z=K zIo^0W-bq3EmB#5?qJbezB|f<9ySA*@E@SlPHr$@S374woU}8B&^C7-q(Uwk9Alt;S za$(i7t1RG@dT&v4tV77jsH}*>ZOjIz6nmB91j?I!G51no)^TQl+DhMTwrZkO?U)~g z82&sE!SZ5DTNwt0-!!on0F&Q(CO!=M50Jc<3NZYL(j5>6`n@k~BXsP`rbuV)ee_qAzJSRAe3b)ELs`@U{$wXP?Vxnb^3I~HAlf&HUx)}cZlodo@=6C>3| zTirS|Z(z`kicsSR7F?^s)@;M+>v%)Ol;@B>ZsTS%i{km-!2`J`2BpSx0qX90u@0l7 zB{e)S*5oL{Wo%fLk1ze4=)5FGg+FSgpzIwxy-*KY1rTFBz)D=^{xd1gw0;jmOdOw= zNDCw>3}Z^4SOYc`#~*~h`#!TLpy{iag-pLUUVF^l6I>BM-8FXFdix(+5LT_Dk-%}T zWUDQ*_{I3`o255KgxylgMbs$L_0^(O3IH1eQU-Z|!$)CxYK~vwQ;USzohDa?In$Ve z?LzErb<`u0xIcjC#{>jc$_8UV;1Rq5FtbPvDNK8|oUl1EIVv(`9zt0FhzFdAK}vvO zqCPw#pPRZ)Bw8oLE!v5X1&P`+f+q#Dg-6`4Aj}t$*7I=;UA$kw5)hgAa|tn2d4hwc z5G~SFK3oE^6ojHgHQ&S?h=sm{uveb4UY59rsc9-tiDDDETphzHLh3_783e2m;sH+T zCOJ4?l~N1z zL}{jDgguIsRZQ$|kN{!@htLYssTZ7S-GEm$iQHr_5sA%A-OnKgmVz7}j^|I@;AFno z?F6)-GC)KkqJ)Jw^uGWC)(LPeh`WU;))KsLq|{rP!2^|}P^v1YEz!`E7;JHgQJRub zE?xdC#qBKJot?V-gBbR#pL!~)(GeXqGR_mGaK}#dquMnm%#8x)VvFmaEYCQF(QkXI z@1dTTxn8s-&-IERLu%xnS6b+kpY~LO#>t^%>Xl6A<(6&Y(ZYu8M^EHy8g4)GyQ=30 zBnd0n=xx26yH*Ad#v3jieEsB620l`|)E+>5M9yPwMX>9ChY#M27o@i{rHOVxaT1}hU?3>y> zn>yAvb%r%{9c=0rG|4YC_2f78K5FW#Y3lE28W?FBoM=+L!8I#1o8Ou?57{>ldp3`( zZypV6es{3>y`XvQLi30G=8un>Kh-pkcQk(#QK)W zu$G?(TYd>zrY^Mn&TskisO4`>%XCM}%t*`ZM2iY116neSnGAA}VZCIy4KjSVj1Vm& zCd){fGID{8QX-?)%4nT3`lt+^lriwFh*qnbS*yB3tAzy<*15H4rA5@HX@4wt2~I7MX4H3)(D8 z+7{HdS#`E89Bs3nZ2J%2&em$TF>AMVXt(ofSJ`i9cL;BHjBa0)-0qawzPO-$NlE+C z+IHv8c9+riWs~i$_zsR%hnrc4yF-VESBK|@4zKVI@8}Mno_gSy!k-*EX-Nunk?|;a%IKyCRaiA~U;o6m;z@>DpD>wY#%x&uG`) z$*z6)ZoXD`lv($FhwcMj-3K>xM~8REM0X!b?vBmuK3vd!q@??3ZTGRx?zqwJ?i}ERmn8m8W;gPmjtoCgo@FJwmOX zvt~W#9D2@s^<3D{lNsJ~F}f!!xkr@QbE%-`a!F5iZO@g?o}AI1tCKy~@V#QK-dwZZ zJcr)vUcLDndJDpPZ$$UrOzthr>@6zjy;ahCySDdEXYbw7-g}e1_wjuat-c3leZ>xa z554*xZRjfr?|U5G_awQmG_&t%L0?%(UwLicv(CPX(Z0&bzUTjtsaAiLS%0-d{|m4F znhpK6;r(^d{V$XIUuE{!7xXuj^uMm{Z|v-E8treM>~Fyj$g~Dp%?8>W2HL#_IyMY+ zh7WW_4|FFF$TJ6e3I=*h2Ks6T`a1^(MhAQbCkNi(2Nha_Z_NgW90rHI21hmwj)o7u ziynNRJUEs)_@Q9%W69vB+QIS8!Ox?EUnU2?;@>E>-h4BA^WEXi53e^9IXx% CFoe4R literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-small.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..340cea9cd850c5dc658ee06b7a0f2c834507df41 GIT binary patch literal 2019 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 Sd7S|rok44zeHaZu?*9NE#=Y49 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1.position.json b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1.position.json new file mode 100644 index 00000000..fd37cbaa --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1.position.json @@ -0,0 +1 @@ +[{"text": "Page", "x1": 0.11764705882352941, "x2": 0.1672467320261438, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "one", "x1": 0.17315196078431372, "x2": 0.20858333333333334, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "of", "x1": 0.21448856209150327, "x2": 0.23220424836601308, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.23810947712418304, "x2": 0.2676356209150327, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "four", "x1": 0.27354084967320264, "x2": 0.310140522875817, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.31604575163398696, "x2": 0.3632875816993465, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.36919281045751645, "x2": 0.4034346405228759, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "document.", "x1": 0.4093398692810459, "x2": 0.5085179738562093, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "Text", "x1": 0.11764705882352941, "x2": 0.15896241830065358, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "position", "x1": 0.16486764705882354, "x2": 0.2380669934640523, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "extraction", "x1": 0.24397222222222223, "x2": 0.33605555555555555, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "happens", "x1": 0.3419607843137255, "x2": 0.4234444444444445, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "in", "x1": 0.42934967320261447, "x2": 0.4458758169934641, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "batches;", "x1": 0.4517810457516341, "x2": 0.5320751633986929, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "marker", "x1": 0.5379803921568629, "x2": 0.6040637254901963, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "1.", "x1": 0.6099689542483662, "x2": 0.627684640522876, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1.txt b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p1.txt new file mode 100644 index 0000000000000000000000000000000000000000..2c832ea036bca5a7f1911b0ea781f1be6a5873e2 GIT binary patch literal 96 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 Rf9tIT#$?nEcO)E`{~u@i^+^B# literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-normal.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3d93262a9e27b04fae88543a30c79e0ba0bb212 GIT binary patch literal 10145 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 RoRBOhUXqhObf5q@{tq`#w3q+@ literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-small.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..734e7fcd06a612f6d8c3365dae27b2d29d2a810b GIT binary patch literal 2027 zcmeH`X*-(>0*2o#cx`D?N@}TCMx)J4Q#GY$=JdSw=(Oc@oE|kD!x>fkp!U(0Afg;% zUt5VK*0#2)T_Qn35VWeTR%mQRMWPi&&72=G-{$#zU-yUmx*kU-2P;djR$vuK0f589 z!*Acd9UL6&@9*#J?S1|Fb$54HE|>4@?0ot1<@4vy+uPeRnM^8`N+goa&CO4rK5cAl ztgo-Ht*w3h_;Gc0b!BB`d3kwhX=!nBQ7jgJ`0!z2VPSrLUL+FD&CR`k|Nh;(ceAsz zZ{NOs^XAR#*RN-0W?sE|H9bB3^5x4HFJ4SdO-)WtPE1S)g~IXi@v*V7(a}+XKrk{g zGCVxY=ks|y-q6s{;NalEzyO!a<#0It{rzkPoF-0^5n_m$B!Et8tUuo>+0%iYinz2 zYO1TNnM`I?RaIqWWkp2=gTbKF>1AbQj~+dG`0!y#Nl9^WaZyoGVPRoGK|y|geqLT) zZf@ckkYfi;Ihmjg5(kiH?qrii(PijEsngxO3-DSXfwSXlQV7a8OWCU|?WCK!Cr$ zzqhwH@c;eK3J`uX|Mmq4JOp5%9;uPeP6Rbh-Q+bgI4Nl3OQocy@_{t$IsaK+Q^imw z?gtbgxg{ttK1asyhI+>zH?VNmRKA9D$g(mCU%{LsKLFLk?;($~4TlvmKS6)K!LXxZ z^btG>X%eoat6(&1fd~0Af&*@kPMikh_>nJsnv`&1&(v zqJ7auemUkSTUdA@s4e8iQ4pPe#!rl0of6xt;&0F3!X{1CwCzJDP5f+!*tvgnB@$}k zDPww;-#24BT9njFPb;6NG2jlPxU)BqjI4hS*(DIq>r~zv>F$s%3oHIocD1MT^V&>H zz}#3**UqMhlXhs}+}ph?TbZi=$9Qkg-j3wMNSSkA@4=p2wl+83*LQdbDB?x&NG)Gc z0%%$zBCDNW5hbD>cyj;(#IeG(;AjZYRv`i@$HTw{3eG*60crh$2LRLJ8m~0ddu~Q4 z2Ij4L)+ddkjY)nR`1wpo(M(LU)AAE%kxXmF*_Y3+igR2X%ocN9ulp_Lx%t#C=HHB5 zT`cgVm@O50=ld-c>bBusQcs7u(Wn6)D@-c!39md&r`*@5#2;QXtqkBLNhqK0P!0-S zN$XcP5)ion0hS2)SB#B7>uQYaM3`5Jf_S$|=cV2n1ej zr*T0?x`eBy8x7f@&3(~u6kaa(RKMa$qydUpI|!*pq@m#o>Ns|WCPCzaLLLI@-Pe1$XnQ(fvq!#EzuCM0Wo@$$P$EcJNbNug8$8({=~uH{ zmvGRIge|V-&w*P5*xLtike3%LP@AP{{(aQRimL`a*&WO!3BXSx%>qyBnEj&RqcCeYw|$UOVl z6~G)og@H{e2F?}|2MwRfCWR9S&9nBp!Fp0#{bc%~7Ylo@+iUQ|-|#L2n)f9%o|*?K zYe?(*i+Lq|w>X9(LUzgOU#hwx;Tw=S30R^aw@J$x#?4@L=>=wL%bHmvSWU6)%_ygy z%J!{ZgE8~^j~hh)$U%7kTaY%9^^?82d+vm-#szN-0`?=;3xV;4CJ@KY;%BZHGX`6_zu~6K+@vfxmZSAMqe2 z9FagsE0(ni3V^G{(Urc(S}Q<8xIPv4U!JV`9YD9(FuVHikF?THttT&5QSET<8U`Dr zt`jd)Bh1`$^dkxk0audGnY2oilTQ3g?$Yc+L8YlBpMN!0nnPEs!aF(*Un`d8)?BVS z^)r9?dZ#q6F};d#+iAr8jWoYqQ1yo>{)op{X#q=(NlbAP{GuZ(-^q%E T=}e1ir%``*S+Sxj2>j_kABHnb literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-thumbnail.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2-thumbnail.gif new file mode 100644 index 0000000000000000000000000000000000000000..18c5964ef49ce48360e2865c39a6264f20cbc161 GIT binary patch literal 477 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2.position.json b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2.position.json new file mode 100644 index 00000000..0b2ff2c0 --- /dev/null +++ b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2.position.json @@ -0,0 +1 @@ +[{"text": "Page", "x1": 0.11764705882352941, "x2": 0.1672467320261438, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "two", "x1": 0.17315196078431372, "x2": 0.20620424836601306, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "of", "x1": 0.21210947712418296, "x2": 0.2298251633986928, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "the", "x1": 0.23573039215686273, "x2": 0.2652565359477124, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "four", "x1": 0.2711617647058823, "x2": 0.30776143790849675, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "page", "x1": 0.31366666666666665, "x2": 0.36090849673202613, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "text", "x1": 0.3668137254901961, "x2": 0.4010555555555556, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "document.", "x1": 0.40696078431372557, "x2": 0.506138888888889, "y1": 0.10061994949494954, "y2": 0.11703409090909095, "upright": true, "direction": "ltr"}, {"text": "Text", "x1": 0.11764705882352941, "x2": 0.15896241830065358, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "position", "x1": 0.16486764705882354, "x2": 0.2380669934640523, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "extraction", "x1": 0.24397222222222223, "x2": 0.33605555555555555, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "happens", "x1": 0.3419607843137255, "x2": 0.4234444444444445, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "in", "x1": 0.42934967320261447, "x2": 0.4458758169934641, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "batches;", "x1": 0.4517810457516341, "x2": 0.5320751633986929, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "marker", "x1": 0.5379803921568629, "x2": 0.6040637254901963, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}, {"text": "2.", "x1": 0.6099689542483662, "x2": 0.627684640522876, "y1": 0.13016540404040405, "y2": 0.14657954545454546, "upright": true, "direction": "ltr"}] \ No newline at end of file diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2.txt b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p2.txt new file mode 100644 index 0000000000000000000000000000000000000000..b261308f2b0fe3865f2b14c03ec1c2cf2cafcb8f GIT binary patch literal 96 zcmW;Au@QhE3`SvVr}!tJuyqLw7l;^z^GG-dr{k-1?|TcK47(M2zyjmYR*?JT$FQq! kiN)Nw{>)mVMHPG~SOyhi36(TSwu-T2U&gMo zOe#xBmXi9EhQwr>U*G5X{c-<2&pGG0=iK+a=e>^34rZo)3osD`9RNO`zrDS^wY9am zxw)~ivA(|k_wQdGkGHnAwz|6d=g*&&m6hMWe=jdDFD)%`x!hmBel0F8{`~p#$B!TX z{rBJZ@87?D`?j#K@b&B0`T6-TU%q_){CRF}ZgzHdW@cu3div9+Pg7GdCU#>PfRN8i1B_xA1EH*emIjEuZ~{hGt!3=a+S9B>FMe2?(XX9>g??7=;&ax+3oG^ZEbC>t*tFBEzQl%O-)UW zjg1Wr4fXZ)b#-;mpFgjyt*xo4sjjZBs;XkKSe2EP6%`fFo;`c|^y!l)Ps+>7%gV}1 zOG`^iN{Wk%A3uIvR8;in(WAn`!iNtZGMUT=4;~a06x_dmKR-YJ-o1Nw@7}$0=T2T; zUT$t~PEOA4+qbi`v$L|YGBYzXGBOwpMtXXBT3XtzTeoiBym{lsjnvfCl$4a@WpE`BQ&(DucCZ9Zc(%0Ab#EBEfj~_pF?3j;_&(Whty}iA?yu3U;J&znY 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-normal.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-normal.gif new file mode 100644 index 0000000000000000000000000000000000000000..746b120ef3a659e1cdaaf4422532528fbc1ec45a GIT binary patch literal 10287 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-small.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p3-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4949e00cb64315faa47f9437c3d8cccbbccffad GIT binary patch literal 2040 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 XvuoeZy}S4C;KPdsA5Xsg%76enr(+AX literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4-xlarge.gif b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/pages/text-4page-p4-xlarge.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bc271e11cc8d3cc1d865e67a439ecb8d1183cc1 GIT binary patch literal 31884 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 literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.pdf b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..69ce274e097b051851fe7603127679138ddb2562 GIT binary patch literal 2784 zcmY!laB`fo!O6K-MF91>{gHwi|*h2~scw1x*mh7FyX43L8nEHHD^U_N)6bub4K(SU_ zQk0sQ%T;m9w#$&q$&tt9_Z%g2gW3CM{%nol*uPQuQs>;=5gCb(fAT6B9W{90yXVP_ zOINgfUwRdvUH<0XN$IWcc z;x@5x$1~4uQ#RKyi1NtH1SNW?wb0}bN|Z#o*~kRN&AwfRd`yNsEYN(k7dS@0J#%65x4A9BJ~yU5EM9(zDV{e0Y5AA9FSSy~y>^Ki1&RqwV^=T2kE6cXD`(co#)HUacl9dwQw-%L^}E z@^8B-M`8K_lsn*l$Oq;hQ0C7_%_&nbgydH{JEU9!&JJ+pc%#W2&C3hYe(+q%1*t@gJo^2^NHx~ydB&S%kl=Rf|+iZ)q(uP-q} z;ZX0~BPEAfzO|PwXHaX7d$Qi8AXWeN>NtrC1%s}h%eMNPmc~3~XFDj9gXu$X-X+S- z_@e0uJerCyqseb(u+C=A!?)PpK%yz~CNP?|E{NK!bW&)U<}T3^A0AKp>;qrre$LUQ|5UuKx0Pb<7i)qN)68 zEwcPrT#a0&<8}2w27M|#=o6Gd(bT>+RSy{cWf|&l`>& zrN>*IhU#gW|75bAEOP~mlaXr^yiOj#aNlwwLa%N~^X1Naw{w+av3LTxN^(jpPIUtn zPx>CfvMIGBGdWQ~-!%_dHDuTo2Mq3Sr}UwSf(TyB^#O~873JT crlzFX#X@pjVo?b=LXC_KjJZ@*UH#p-0Ll8gd;kCd literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.txt b/documentcloud/documents/processing/tests/spec/documents/text-4page/expected/text-4page.txt new file mode 100644 index 0000000000000000000000000000000000000000..f217919eb250cc8d759afb2a607198983f529b6b GIT binary patch literal 393 zcmWGYOixwF&jaE#g_4X^g|z(AB838wU`c94i9$+#a%paAUWp!82#8ydUz}NznV+Ws zj#R{2u3Q372$r-7|)(W|aMcJuE3Wj>`wyu4hY&vDi z=0Gtxri=+raloS6j3A&x!vsW)b3=4ag|KMBj0ANgQ^yvT-TNk3+9qU)OMHLaT2*!ID{uX9b$<>u9=Us6&P`_s~|{}Rgqa(icRE20mZQt!C`aSb3pjeO$tcGE`a!? zTtKW=5&Suf3b==|aCMIihT!fHhKHp(vqe}OSRn$7;~jz|ehtJdh~^v~(_3?Fxn^q~ zw$g0XS{>%`f45AazsH6X1Z$pXLJ3@n8O#<@uww=b2%Qsv5dj==h<1TrhZNk5DIt(J zt&IDtDxAglwN;LOkTJ9E*xa7t>edVs?-~sZC(q*dOHU1a+H-YT;?Q!(rTXD}u90ia zrlixu9o?}-^A~p=z16krL2KcK1M@~T7pJd$*l@ak)-*Q2u=}kOcjB8rY24%&EDNoK z1%K>z9BWt_kAO*fihvVKh#-GL7O=6c9V@(^bgj7Po7kFzy5-wVNsDRq5@-*s$#5N6JU8rO?ZTn%A91Ysa9#{EXrHI$Qf|XItRr!X<}YAT-undwkMhM zo9e{clXr|kKaTvFZ=~z{ckw2)y|lVh>b(P7 z?pEDsSa)*&uLT1wONP#E%p3@{@0q=}C~UT`GPx1%IQu+XKnoK492U5E2aQCy~O)IhlIw5sW!A~3%~nqENyogQT}NEsllqAtN9XVSA;Hb zjb4VFy-?z8z|}wRE1dtzwJkrqX^cA2P;oaMlMT<@8SXkhm>#v19rceX554NEMm}cD zGllZ;^BGZ_zu0!AxW9K@M3#>X3hcsK1V;%L!6!ac!7vnqu0!$w>^R(z49ek z5)2;?A41 zl9YmE89htuNUee46qGtz&na}cUaR9Mj-y$eV`xUj;hauI1A&sztKkiDh`e2tz$8gr Lfym|hWCQXKgYKzC literal 0 HcmV?d00001 diff --git a/documentcloud/documents/processing/tests/spec/generate.py b/documentcloud/documents/processing/tests/spec/generate.py index b8ccb809..697b6efc 100644 --- a/documentcloud/documents/processing/tests/spec/generate.py +++ b/documentcloud/documents/processing/tests/spec/generate.py @@ -88,10 +88,10 @@ def main(argv): for case in cases: print(f"processing {case['name']} ...", flush=True) metadata = runner.run_case(case) - if metadata["errors"]: + if bool(metadata["errors"]) != case["expects_error"]: failures.append( - f"{case['name']}: pipeline reported errors: " - f"{metadata['errors']}" + f"{case['name']}: expected errors={case['expects_error']}, " + f"pipeline reported: {metadata['errors']}" ) continue if args.check: diff --git a/documentcloud/documents/processing/tests/spec/harness.py b/documentcloud/documents/processing/tests/spec/harness.py index 7796b0ae..cbe15a73 100644 --- a/documentcloud/documents/processing/tests/spec/harness.py +++ b/documentcloud/documents/processing/tests/spec/harness.py @@ -94,6 +94,8 @@ def load_case(case_dir): case_dir = Path(case_dir) with open(case_dir / "case.json", encoding="utf-8") as case_file: case = json.load(case_file) + case.setdefault("needs_ocr", False) + case.setdefault("expects_error", False) case["dir"] = case_dir case["name"] = case_dir.name case["input"] = case_dir / "input" / f"{case['slug']}.pdf" @@ -118,12 +120,20 @@ def _is_lfs_pointer(file_path): def ocr_libraries_available(): - """Whether the bundled Tesseract shared libraries are real files (they - are stored in Git LFS and may be un-pulled pointers).""" - return all( - not _is_lfs_pointer(TESSERACT_DIR / lib) + """Whether the bundled Tesseract shared libraries are usable: real files + (they are stored in Git LFS and may be un-pulled pointers) that actually + load on this platform (they are Linux x86-64 builds).""" + if any( + _is_lfs_pointer(TESSERACT_DIR / lib) for lib in TESSERACT_LIBS + ["libtesseract.so.5"] - ) + ): + return False + try: + preload_tesseract_libraries() + ctypes.CDLL(str(TESSERACT_DIR / "libtesseract.so.5"), mode=ctypes.RTLD_GLOBAL) + except OSError: + return False + return True def preload_tesseract_libraries(): @@ -212,6 +222,13 @@ def __enter__(self): self._original_request = utils.request utils.request = self._record_callback + # The local-environment sentry stub re-raises exceptions "for + # debugging"; neutralize it so the error path behaves as in + # production (error is sent via the API callback and the function + # returns) and error cases can be snapshotted + self._original_capture_exception = utils.capture_exception + utils.capture_exception = lambda exc: None + # Never use pebble subprocesses: the queue and the callback recorder # live in this process self._original_use_timeout = error_handling.USE_TIMEOUT @@ -241,6 +258,7 @@ def __enter__(self): def __exit__(self, exc_type, exc_value, traceback): self.publisher.tasks = self._original_tasks self.utils.request = self._original_request + self.utils.capture_exception = self._original_capture_exception self._error_handling.USE_TIMEOUT = self._original_use_timeout self._settings_override.disable() diff --git a/documentcloud/documents/processing/tests/spec/make_corpus.py b/documentcloud/documents/processing/tests/spec/make_corpus.py index cb794723..b9801533 100644 --- a/documentcloud/documents/processing/tests/spec/make_corpus.py +++ b/documentcloud/documents/processing/tests/spec/make_corpus.py @@ -80,6 +80,19 @@ def build_text_3page(pdf): ) +def build_text_4page(pdf): + # Four pages fill more than one TEXT_POSITION_BATCH (3), exercising the + # multi-batch flush path in extract_image + for number, word in enumerate(["one", "two", "three", "four"], start=1): + add_text_page( + pdf, + [ + f"Page {word} of the four page text document.", + f"Text position extraction happens in batches; marker {number}.", + ], + ) + + def build_scan_2page(pdf): add_scanned_page(pdf, ["SCANNED PAGE ONE", "NO TEXT LAYER HERE"]) add_scanned_page(pdf, ["SCANNED PAGE TWO", "EVERY PAGE IS OCRD"]) @@ -142,6 +155,7 @@ def build_redact_2page(pdf): BUILDERS = { "text-1page": build_text_1page, "text-3page": build_text_3page, + "text-4page": build_text_4page, "scan-2page": build_scan_2page, "mixed-2page": build_mixed_2page, "force-ocr-1page": build_force_ocr_1page, @@ -151,17 +165,30 @@ def build_redact_2page(pdf): } +def build_corrupt_1page(): + """A file with a PDF header but truncated, unparseable structure — the + pipeline must report an error through the API callback.""" + return b"%PDF-1.6\n1 0 obj\n<< /Type /Catalog" + b"\x00garbage" * 8 + + +RAW_BUILDERS = { + "corrupt-1page": build_corrupt_1page, +} + + def main(argv): - names = argv or sorted(BUILDERS) + names = argv or sorted(BUILDERS) + sorted(RAW_BUILDERS) for name in names: - builder = BUILDERS[name] input_dir = DOCUMENTS_DIR / name / "input" input_dir.mkdir(parents=True, exist_ok=True) - pdf = pymupdf.open() - builder(pdf) output = input_dir / f"{name}.pdf" - pdf.save(str(output), garbage=4, deflate=True, deflate_images=True) - pdf.close() + if name in RAW_BUILDERS: + output.write_bytes(RAW_BUILDERS[name]()) + else: + pdf = pymupdf.open() + BUILDERS[name](pdf) + pdf.save(str(output), garbage=4, deflate=True, deflate_images=True) + pdf.close() print(f"wrote {output}") diff --git a/documentcloud/documents/processing/tests/spec/test_spec.py b/documentcloud/documents/processing/tests/spec/test_spec.py index 16d0c903..e555e38b 100644 --- a/documentcloud/documents/processing/tests/spec/test_spec.py +++ b/documentcloud/documents/processing/tests/spec/test_spec.py @@ -9,11 +9,13 @@ Requires a reachable Redis (as the pipeline tests in CI already do). Cases that need OCR are skipped unless the Git LFS Tesseract libraries and the -pinned eng.traineddata are present. +pinned eng.traineddata are present; set DC_SPEC_REQUIRE_OCR=1 (as CI does) +to make an unavailable OCR runtime a failure instead of a skip. """ # Standard Library import json +import os import shutil import tempfile from pathlib import Path @@ -46,32 +48,39 @@ def ocr_ready(): @pytest.mark.parametrize("case", CASES, ids=_case_id) def test_pipeline_output_contract(case, ocr_ready): if case["needs_ocr"] and not ocr_ready: - pytest.skip( + message = ( "OCR unavailable: run git lfs pull --include " '"documentcloud/documents/processing/ocr/tesseract/*" and ' "provide eng.traineddata (see spec/README.md)" ) + if os.environ.get("DC_SPEC_REQUIRE_OCR"): + pytest.fail(message) + pytest.skip(message) media_root = Path(tempfile.mkdtemp(prefix="dc-processing-spec-")) - try: - with harness.PipelineRunner(media_root, use_ocr=ocr_ready) as runner: - metadata = runner.run_case(case) + with harness.PipelineRunner(media_root, use_ocr=ocr_ready) as runner: + metadata = runner.run_case(case) + if not case["expects_error"]: assert not metadata[ "errors" ], f"pipeline reported errors: {metadata['errors']}" - actual_dir = media_root / "actual" - shutil.copytree(runner.doc_directory(case), actual_dir) - with open(actual_dir / "metadata.json", "w", encoding="utf-8") as meta_file: - json.dump(metadata, meta_file) - - problems = compare.compare_case( - case["dir"] / "expected", - actual_dir, - ignore_metadata_fields=(("file_hash",) if case.get("redactions") else ()), - ) - assert not problems, "\n".join( - [f"{case['name']} does not match its golden outputs:"] + problems - ) - finally: - shutil.rmtree(media_root, ignore_errors=True) + actual_dir = media_root / "actual" + shutil.copytree(runner.doc_directory(case), actual_dir) + with open(actual_dir / "metadata.json", "w", encoding="utf-8") as meta_file: + json.dump(metadata, meta_file) + + problems = compare.compare_case( + case["dir"] / "expected", + actual_dir, + ignore_metadata_fields=(("file_hash",) if case.get("redactions") else ()), + ) + # Keep the output tree on failure so it can be diffed against expected/ + assert not problems, "\n".join( + [ + f"{case['name']} does not match its golden outputs " + f"(actual output kept at {actual_dir}):" + ] + + problems + ) + shutil.rmtree(media_root, ignore_errors=True) From 5fe986f45ec6117f042357cfce80f4515fb94ca9 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 18 Jul 2026 14:53:36 +0000 Subject: [PATCH 4/4] Add equivalence comparison mode for replacement validation compare_case now takes strictness="exact" (default; regression testing the current pipeline, byte-exact) or strictness="equivalent" (validating a modified or replacement pipeline against the same goldens): - trailing control characters (pdfium's NUL, Tesseract's form feed) are normalized away, treating them as implementation accidents rather than contract; OCR text is held to a similarity threshold instead of equality - images require the same dimensions and a small mean pixel delta rather than identical bytes - positions must parse, stay in the 0-1 range, agree on emptiness, and carry approximately the same text - the txt.json ocr field is compared as OCR'd-or-not rather than by engine name; file_hash must be well-formed but is not compared by value; the callback sequence is not compared, though error reports still must be sent Exposed via generate.py --check --equivalent. test_spec.py and CI stay on exact mode. The README documents the replacement seam (corpus + compare are implementation-independent; harness.py is the current pipeline's runner) and lists real-world corpus breadth and quirk verdicts as open items. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Le7iTGKrY5TmE4jL4GhnWU --- .../documents/processing/tests/spec/README.md | 43 +- .../processing/tests/spec/compare.py | 366 ++++++++++++++---- .../processing/tests/spec/generate.py | 7 + 3 files changed, 343 insertions(+), 73 deletions(-) diff --git a/documentcloud/documents/processing/tests/spec/README.md b/documentcloud/documents/processing/tests/spec/README.md index 8623fce5..a1f5cac3 100644 --- a/documentcloud/documents/processing/tests/spec/README.md +++ b/documentcloud/documents/processing/tests/spec/README.md @@ -122,10 +122,44 @@ production `eng.traineddata` (from the `ocr-languages` storage folder) in `.cache/` instead and regenerate — but note the committed goldens must then be produced with that same file. -## Comparison rules +## Validating a modified or replacement pipeline + +The corpus and comparison logic are deliberately independent of the current +implementation: `documents/` is a set of input → expected-output pairs, and +`compare.compare_case(expected_dir, actual_dir)` only looks at two +directories. `harness.py` is the *current* pipeline's runner; to validate a +replacement, write a runner for it that stages each case's input, produces a +document directory in the same layout, and records the final database +metadata (plus any error reports) in `metadata.json` — then compare with +`strictness="equivalent"`. + +Two strictness modes: + +- **`exact`** (default, used by `test_spec.py` and CI) answers "is the + current pipeline unchanged?" — byte-exact text and images, full API + callback sequence. This intentionally pins implementation details, + including quirks like pdfium's trailing NUL and Tesseract's trailing form + feed, so any change is visible. +- **`equivalent`** (`generate.py --check --equivalent`, or + `strictness="equivalent"`) answers "does a different implementation + produce equivalent final output?" — trailing control characters are + normalized away, OCR text is held to a similarity threshold instead of + equality, images to a mean pixel delta instead of identical bytes, the + `ocr` field to OCR'd-or-not instead of an engine name, and the callback + sequence is not compared (though error reports must still be sent). The + thresholds at the top of `compare.py` are a first cut — tune them against + real replacement candidates. + +Open question for the team: which of the pinned quirks are actually +depended on downstream (search indexing, the frontend, add-ons)? The +equivalence rules currently treat the trailing NUL/form-feed as accidents a +replacement is free to fix; if a consumer turns out to rely on one, move it +into the contract and tighten the rule. + +## Comparison rules (exact mode) Some pipeline output is intentionally or unavoidably non-reproducible, so -`compare.py` normalizes: +`compare.py` normalizes even in exact mode: | Output | Rule | | --- | --- | @@ -169,6 +203,11 @@ reimplementation would need to match (or knowingly change): messages would not be caught - **Error paths beyond an unparseable input** (`corrupt-1page`) — e.g. OCR failures, storage failures, and the retry queue +- **Real-world documents** — the corpus is synthetic (built with PyMuPDF), + so rotated pages, non-Latin/RTL text, ligatures, skewed scans, forms, + broken xref tables, JPEG2000 images, and unusual encodings are not + represented. Adding a handful of small, redistributable real documents is + the highest-value corpus improvement for replacement confidence Platform note: the GIF goldens are byte-compared and therefore pinned to the Linux builds of pdfium/Pillow used in CI. Run the suite on Linux (or in the diff --git a/documentcloud/documents/processing/tests/spec/compare.py b/documentcloud/documents/processing/tests/spec/compare.py index 909beea3..4d8d89fa 100644 --- a/documentcloud/documents/processing/tests/spec/compare.py +++ b/documentcloud/documents/processing/tests/spec/compare.py @@ -2,7 +2,10 @@ Compare a freshly-processed document directory against a committed golden (`expected/`) directory. -Comparison rules, per file type: +Two strictness modes serve two different questions: + +``exact`` (default) — "is the current pipeline unchanged?" Used by +test_spec.py for regression testing. Rules, per file type: - ``pages/*.txt``, ``{slug}.txt`` exact bytes - ``{slug}.txt.json`` JSON equality with all ``updated`` @@ -29,9 +32,34 @@ file_hash loosened to presence+shape for redaction cases, and bucket prefixes stripped from error messages + +``equivalent`` — "does a different implementation produce equivalent final +output?" For validating a modified or replacement pipeline (different +renderer, OCR engine, or PDF library) against the same goldens: + +- text is compared with trailing control characters normalized away (the + current pipeline's trailing NUL from pdfium and trailing form feed from + Tesseract are treated as implementation accidents, not contract); + OCR-produced text must reach a similarity ratio rather than match exactly +- images must have the same dimensions and a small mean pixel difference + rather than identical bytes +- positions must parse, stay within the 0-1 coordinate range, agree on + emptiness, and carry approximately the same text +- the PDF must have the same page count, dimensions within tolerance, and + a similar text layer +- metadata: page_count and status exact; page_spec decoded with a small + dimension tolerance; file_hash present and well-formed but not compared + by value; the callback *sequence* is not compared (message choreography + is not the contract), but error reports must still be sent +- txt.json: page structure and lang exact; the ``ocr`` field is compared + as OCR'd-or-not rather than by engine name + +The equivalence thresholds are a first cut — tune them as real replacement +candidates are evaluated. """ # Standard Library +import difflib import io import json import re @@ -41,16 +69,48 @@ PRESENCE_ONLY_SUFFIXES = (".index", ".pagesize") +# Equivalence-mode thresholds +OCR_TEXT_SIMILARITY = 0.90 +POSITION_TEXT_SIMILARITY = 0.80 +PDF_TEXT_SIMILARITY = 0.90 +IMAGE_MEAN_DELTA = 4.0 # mean absolute per-channel difference, 0-255 +DIMENSION_TOLERANCE = 0.5 # PDF points + +# Trailing characters the current implementation emits but which are not +# treated as contract in equivalence mode: pdfium terminates extracted text +# with NUL, Tesseract with a form feed +CONTROL_CHARS = "\x00\x0c" + +PAGE_FILE = re.compile(r"-p(\d+)\.(txt|position\.json)$") +SHA1_HEX = re.compile(r"^[0-9a-f]{40}$") +# Error messages may embed storage paths whose bucket prefix varies by +# environment; compare from the documents/ segment on +BUCKET_PREFIX = re.compile(r"[^\s']*documents/") + -def compare_case(expected_dir, actual_dir, ignore_metadata_fields=()): +def compare_case( + expected_dir, actual_dir, ignore_metadata_fields=(), strictness="exact" +): """Compare two document directories. Returns a list of human-readable problems; an empty list means the directories match. ignore_metadata_fields lists metadata.json database fields excluded from comparison — used for file_hash on redaction cases, where the final PDF - is rewritten with non-reproducible ids so its hash differs run to run.""" + is rewritten with non-reproducible ids so its hash differs run to run. + + strictness is "exact" (regression testing the current pipeline) or + "equivalent" (validating a replacement implementation); see the module + docstring.""" + assert strictness in ("exact", "equivalent") expected_dir = Path(expected_dir) actual_dir = Path(actual_dir) + context = { + "strictness": strictness, + "ignore_fields": ignore_metadata_fields, + # 0-indexed page numbers the golden marks as OCR'd, for text + # similarity rules in equivalence mode + "ocr_pages": _expected_ocr_pages(expected_dir), + } problems = [] expected_files = _relative_files(expected_dir) @@ -63,12 +123,7 @@ def compare_case(expected_dir, actual_dir, ignore_metadata_fields=()): for name in sorted(expected_files & actual_files): problems.extend( - _compare_file( - expected_dir / name, - actual_dir / name, - name, - ignore_metadata_fields, - ) + _compare_file(expected_dir / name, actual_dir / name, name, context) ) return problems @@ -82,22 +137,46 @@ def _relative_files(directory): } -def _compare_file(expected, actual, name, ignore_metadata_fields=()): +def _expected_ocr_pages(expected_dir): + """The set of 0-indexed pages the golden txt.json marks as OCR'd.""" + for json_text_path in Path(expected_dir).glob("*.txt.json"): + document = json.loads(json_text_path.read_text()) + return {page["page"] for page in document.get("pages", []) if page.get("ocr")} + return set() + + +def _page_number(name): + """0-indexed page number of a per-page file, or None.""" + match = PAGE_FILE.search(name) + return int(match.group(1)) - 1 if match else None + + +def _normalize_text(text): + return text.strip(CONTROL_CHARS + " \t\r\n") + + +def _similarity(expected_text, actual_text): + return difflib.SequenceMatcher( + None, _normalize_text(expected_text), _normalize_text(actual_text) + ).ratio() + + +def _compare_file(expected, actual, name, context): # pylint: disable=too-many-return-statements if name == "metadata.json": - return _compare_metadata(expected, actual, name, ignore_metadata_fields) + return _compare_metadata(expected, actual, name, context) if name.endswith(PRESENCE_ONLY_SUFFIXES): return [] # presence already checked if name.endswith(".position.json"): - return _compare_positions(expected, actual, name) + return _compare_positions(expected, actual, name, context) if name.endswith(".txt.json"): - return _compare_json_text(expected, actual, name) + return _compare_json_text(expected, actual, name, context) if name.endswith(".txt"): - return _compare_bytes(expected, actual, name) + return _compare_text(expected, actual, name, context) if name.endswith(".gif"): - return _compare_images(expected, actual, name) + return _compare_images(expected, actual, name, context) if name.endswith(".pdf"): - return _compare_pdfs(expected, actual, name) + return _compare_pdfs(expected, actual, name, context) return _compare_bytes(expected, actual, name) @@ -107,30 +186,72 @@ def _compare_bytes(expected, actual, name): return [] -def _compare_metadata(expected, actual, name, ignore_fields=()): +def _compare_text(expected, actual, name, context): + if context["strictness"] == "exact": + return _compare_bytes(expected, actual, name) + expected_text = expected.read_text(encoding="utf-8") + actual_text = actual.read_text(encoding="utf-8") + page = _page_number(name) + # A page is held to the similarity threshold if the golden marks it as + # OCR'd; the concatenated document text is if any page was OCR'd + ocr = ( + page in context["ocr_pages"] if page is not None else bool(context["ocr_pages"]) + ) + if ocr: + ratio = _similarity(expected_text, actual_text) + if ratio < OCR_TEXT_SIMILARITY: + return [ + f"{name}: OCR text similarity {ratio:.3f} below " + f"{OCR_TEXT_SIMILARITY}" + ] + return [] + if _normalize_text(expected_text) != _normalize_text(actual_text): + return [f"{name}: text differs (after trailing-control normalization)"] + return [] + + +def _compare_metadata(expected, actual, name, context): expected_metadata = json.loads(expected.read_text()) actual_metadata = json.loads(actual.read_text()) problems = _compare_database( expected_metadata["database"], actual_metadata["database"], name, - ignore_fields, + context, ) - problems.extend( - _compare_callbacks( - expected_metadata.get("callbacks", []), - actual_metadata.get("callbacks", []), - name, - loose_file_hash="file_hash" in ignore_fields, + if context["strictness"] == "exact": + problems.extend( + _compare_callbacks( + expected_metadata.get("callbacks", []), + actual_metadata.get("callbacks", []), + name, + loose_file_hash="file_hash" in context["ignore_fields"], + ) ) - ) + else: + # Message choreography is not the contract for a replacement, but + # error reports are: the same error endpoints must be hit + expected_errors = [ + (callback["method"], callback["url"]) + for callback in expected_metadata.get("errors", []) + ] + actual_errors = [ + (callback["method"], callback["url"]) + for callback in actual_metadata.get("errors", []) + ] + if expected_errors != actual_errors: + problems.append( + f"{name}: error reports differ: expected {expected_errors!r}, " + f"got {actual_errors!r}" + ) return problems -def _compare_database(expected_database, actual_database, name, ignore_fields=()): +def _compare_database(expected_database, actual_database, name, context): + equivalent = context["strictness"] == "equivalent" problems = [] for field in sorted(set(expected_database) | set(actual_database)): - if field in ignore_fields: + if field in context["ignore_fields"]: continue expected_value = expected_database.get(field) actual_value = actual_database.get(field) @@ -138,11 +259,20 @@ def _compare_database(expected_database, actual_database, name, ignore_fields=() # The segment order within a page_spec depends on Redis set # iteration order and is not deterministic; compare the decoded # per-page dimensions instead - if _decode_page_spec(expected_value) != _decode_page_spec(actual_value): + tolerance = DIMENSION_TOLERANCE if equivalent else 0.0 + if not _page_specs_match(expected_value, actual_value, tolerance): problems.append( f"{name}: page_spec decodes differently: " f"expected {expected_value!r}, got {actual_value!r}" ) + elif field == "file_hash" and equivalent: + # A replacement produces different PDF bytes; require a + # well-formed hash, not the same one + if not (isinstance(actual_value, str) and SHA1_HEX.match(actual_value)): + problems.append( + f"{name}: file_hash is not a well-formed SHA-1: " + f"{actual_value!r}" + ) elif expected_value != actual_value: problems.append( f"{name}: database field {field!r} differs: " @@ -151,12 +281,6 @@ def _compare_database(expected_database, actual_database, name, ignore_fields=() return problems -SHA1_HEX = re.compile(r"^[0-9a-f]{40}$") -# Error messages may embed storage paths whose bucket prefix varies by -# environment; compare from the documents/ segment on -BUCKET_PREFIX = re.compile(r"[^\s']*documents/") - - def _normalize_callback(callback, loose_file_hash): """Normalize one captured API callback for comparison. @@ -226,6 +350,32 @@ def _decode_page_spec(page_spec): return pages +def _page_specs_match(expected_spec, actual_spec, tolerance): + expected_pages = _decode_page_spec(expected_spec) + actual_pages = _decode_page_spec(actual_spec) + if not isinstance(expected_pages, dict) or not isinstance(actual_pages, dict): + return expected_pages == actual_pages + if set(expected_pages) != set(actual_pages): + return False + for page, expected_dimension in expected_pages.items(): + actual_dimension = actual_pages[page] + if expected_dimension == actual_dimension: + continue + if tolerance <= 0: + return False + try: + expected_w, expected_h = map(float, expected_dimension.split("x")) + actual_w, actual_h = map(float, actual_dimension.split("x")) + except ValueError: + return False + if ( + abs(expected_w - actual_w) > tolerance + or abs(expected_h - actual_h) > tolerance + ): + return False + return True + + def _normalize_updated(document): document = dict(document) document["updated"] = 0 @@ -233,43 +383,69 @@ def _normalize_updated(document): return document -def _compare_json_text(expected, actual, name): +def _normalize_page_equivalent(page): + """In equivalence mode a page's ocr field is compared as OCR'd-or-not + (a replacement may use a different engine label) and its contents are + compared separately with text rules.""" + page = dict(page) + page["ocr"] = bool(page.get("ocr")) + page.pop("contents", None) + return page + + +def _compare_json_text(expected, actual, name, context): + # pylint: disable=too-many-locals + equivalent = context["strictness"] == "equivalent" expected_json = _normalize_updated(json.loads(expected.read_text())) actual_json = _normalize_updated(json.loads(actual.read_text())) - if expected_json != actual_json: - problems = [] - expected_pages = expected_json.get("pages", []) - actual_pages = actual_json.get("pages", []) - if len(expected_pages) != len(actual_pages): - problems.append( - f"{name}: page count differs: expected {len(expected_pages)}, " - f"got {len(actual_pages)}" - ) - for index, (expected_page, actual_page) in enumerate( - zip(expected_pages, actual_pages) - ): - if expected_page != actual_page: - for key in sorted(set(expected_page) | set(actual_page)): - if expected_page.get(key) != actual_page.get(key): - problems.append( - f"{name}: page {index} field {key!r} differs: " - f"expected {expected_page.get(key)!r}, " - f"got {actual_page.get(key)!r}" - ) - top_expected = {k: v for k, v in expected_json.items() if k != "pages"} - top_actual = {k: v for k, v in actual_json.items() if k != "pages"} - if top_expected != top_actual: - problems.append( - f"{name}: top-level fields differ: expected {top_expected!r}, " - f"got {top_actual!r}" - ) - return problems or [f"{name}: contents differ"] - return [] + problems = [] + expected_pages = expected_json.get("pages", []) + actual_pages = actual_json.get("pages", []) + if len(expected_pages) != len(actual_pages): + return [ + f"{name}: page count differs: expected {len(expected_pages)}, " + f"got {len(actual_pages)}" + ] + for index, (expected_page, actual_page) in enumerate( + zip(expected_pages, actual_pages) + ): + if equivalent: + expected_contents = expected_page.get("contents", "") + actual_contents = actual_page.get("contents", "") + if expected_page.get("ocr"): + ratio = _similarity(expected_contents, actual_contents) + if ratio < OCR_TEXT_SIMILARITY: + problems.append( + f"{name}: page {index} OCR text similarity " + f"{ratio:.3f} below {OCR_TEXT_SIMILARITY}" + ) + elif _normalize_text(expected_contents) != _normalize_text(actual_contents): + problems.append(f"{name}: page {index} contents differ") + expected_page = _normalize_page_equivalent(expected_page) + actual_page = _normalize_page_equivalent(actual_page) + if expected_page != actual_page: + for key in sorted(set(expected_page) | set(actual_page)): + if expected_page.get(key) != actual_page.get(key): + problems.append( + f"{name}: page {index} field {key!r} differs: " + f"expected {expected_page.get(key)!r}, " + f"got {actual_page.get(key)!r}" + ) + top_expected = {k: v for k, v in expected_json.items() if k != "pages"} + top_actual = {k: v for k, v in actual_json.items() if k != "pages"} + if top_expected != top_actual: + problems.append( + f"{name}: top-level fields differ: expected {top_expected!r}, " + f"got {top_actual!r}" + ) + return problems -def _compare_positions(expected, actual, name): +def _compare_positions(expected, actual, name, context): expected_words = json.loads(expected.read_text()) actual_words = json.loads(actual.read_text()) + if context["strictness"] == "equivalent": + return _compare_positions_equivalent(expected_words, actual_words, name) if len(expected_words) != len(actual_words): return [ f"{name}: word count differs: expected {len(expected_words)}, " @@ -299,14 +475,44 @@ def _compare_positions(expected, actual, name): return problems -def _compare_images(expected, actual, name): +def _compare_positions_equivalent(expected_words, actual_words, name): + """A replacement extractor may segment words differently; require valid + structure, in-range coordinates, agreement on emptiness, and + approximately the same text.""" + problems = [] + if bool(expected_words) != bool(actual_words): + return [ + f"{name}: emptiness differs: expected {len(expected_words)} " + f"words, got {len(actual_words)}" + ] + for index, word in enumerate(actual_words): + for key in ("x1", "x2", "y1", "y2"): + value = word.get(key) + if not isinstance(value, (int, float)) or not 0 <= value <= 1: + problems.append(f"{name}: word {index} {key!r} out of range: {value!r}") + if not isinstance(word.get("text"), str): + problems.append(f"{name}: word {index} has no text") + expected_text = " ".join(word.get("text", "") for word in expected_words) + actual_text = " ".join(word.get("text", "") for word in actual_words) + ratio = _similarity(expected_text, actual_text) + if expected_words and ratio < POSITION_TEXT_SIMILARITY: + problems.append( + f"{name}: position text similarity {ratio:.3f} below " + f"{POSITION_TEXT_SIMILARITY}" + ) + return problems + + +def _compare_images(expected, actual, name, context): + # pylint: disable=too-many-locals, too-many-return-statements expected_bytes = expected.read_bytes() actual_bytes = actual.read_bytes() if expected_bytes == actual_bytes: return [] + equivalent = context["strictness"] == "equivalent" # Third Party - from PIL import Image, ImageChops + from PIL import Image, ImageChops, ImageStat expected_image = Image.open(io.BytesIO(expected_bytes)).convert("RGB") actual_image = Image.open(io.BytesIO(actual_bytes)).convert("RGB") @@ -318,11 +524,20 @@ def _compare_images(expected, actual, name): difference = ImageChops.difference(expected_image, actual_image) bounding_box = difference.getbbox() if bounding_box is None: + if equivalent: + return [] return [f"{name}: bytes differ but pixels are identical"] + mean_delta = max(ImageStat.Stat(difference).mean) + if equivalent: + if mean_delta <= IMAGE_MEAN_DELTA: + return [] + return [ + f"{name}: mean pixel delta {mean_delta:.2f} above " f"{IMAGE_MEAN_DELTA}" + ] max_channel_difference = max(band.getextrema()[1] for band in difference.split()) return [ f"{name}: pixels differ in region {bounding_box} " - f"(max channel delta {max_channel_difference})" + f"(max channel delta {max_channel_difference}, mean {mean_delta:.2f})" ] @@ -343,7 +558,8 @@ def _pdf_summary(pdf_path): return summary -def _compare_pdfs(expected, actual, name): +def _compare_pdfs(expected, actual, name, context): + equivalent = context["strictness"] == "equivalent" try: expected_summary = _pdf_summary(expected) actual_summary = _pdf_summary(actual) @@ -361,11 +577,19 @@ def _compare_pdfs(expected, actual, name): zip(expected_summary, actual_summary) ): for key in ("width", "height"): - if expected_page[key] != actual_page[key]: + delta = abs(expected_page[key] - actual_page[key]) + if delta > (DIMENSION_TOLERANCE if equivalent else 0): problems.append( f"{name}: page {index + 1} {key} differs: " f"expected {expected_page[key]}, got {actual_page[key]}" ) - if expected_page["text"] != actual_page["text"]: + if equivalent: + ratio = _similarity(expected_page["text"], actual_page["text"]) + if ratio < PDF_TEXT_SIMILARITY: + problems.append( + f"{name}: page {index + 1} text layer similarity " + f"{ratio:.3f} below {PDF_TEXT_SIMILARITY}" + ) + elif expected_page["text"] != actual_page["text"]: problems.append(f"{name}: page {index + 1} text layer differs") return problems diff --git a/documentcloud/documents/processing/tests/spec/generate.py b/documentcloud/documents/processing/tests/spec/generate.py index 697b6efc..412e94a4 100644 --- a/documentcloud/documents/processing/tests/spec/generate.py +++ b/documentcloud/documents/processing/tests/spec/generate.py @@ -61,6 +61,12 @@ def main(argv): action="store_true", help="compare a fresh run against expected/ instead of overwriting", ) + parser.add_argument( + "--equivalent", + action="store_true", + help="with --check: use the looser equivalence rules meant for " + "validating a modified or replacement pipeline (see README)", + ) args = parser.parse_args(argv) harness.ensure_environment() @@ -103,6 +109,7 @@ def main(argv): ignore_metadata_fields=( ("file_hash",) if case.get("redactions") else () ), + strictness="equivalent" if args.equivalent else "exact", ) for problem in problems: failures.append(f"{case['name']}: {problem}")