Spaces:
Configuration error
Configuration error
Download tests/test_pdf_loader.py from ZainabEman/OCR-Based-Spare-Part-Localization: direct link, hf CLI and curl.
- Browser
- Download file 2.45 kB
-
https://huggingface.co/spaces/ZainabEman/OCR-Based-Spare-Part-Localization/resolve/main/tests/test_pdf_loader.py
- Command line
-
hf download hf://spaces/ZainabEman/OCR-Based-Spare-Part-Localization/tests/test_pdf_loader.py
-
curl -L -o test_pdf_loader.py https://huggingface.co/spaces/ZainabEman/OCR-Based-Spare-Part-Localization/resolve/main/tests/test_pdf_loader.py
2.45 kB
| """Catalogue page detection and the Phase 1 decoy-image guard.""" | |
| from spareparts import config, pdf_loader | |
| def test_detects_exactly_the_thirty_catalogue_pages(doc): | |
| pages = pdf_loader.find_catalogue_pages(doc) | |
| first, last = config.EXPECTED_CATALOGUE_PAGES | |
| assert pages == list(range(first, last + 1)) | |
| assert len(pages) == config.EXPECTED_PAGE_COUNT | |
| def test_front_matter_is_not_a_catalogue_page(doc): | |
| # Page 24 is the needle table (a real table, wrong header) and page 25 is | |
| # the catalogue cover. Neither may be indexed. | |
| for pdf_page in (1, 5, 24, 25): | |
| assert not pdf_loader.is_catalogue_page(doc[pdf_page - 1]) | |
| def test_every_catalogue_page_yields_a_native_resolution_diagram(doc): | |
| for pdf_page in pdf_loader.find_catalogue_pages(doc): | |
| diagram = pdf_loader.select_diagram_image(doc[pdf_page - 1]) | |
| assert diagram is not None, f"page {pdf_page}" | |
| assert diagram.width == 1689, f"page {pdf_page}" | |
| assert 2200 < diagram.height < 2400, f"page {pdf_page}" | |
| def test_decoy_guard_rejects_off_page_images(doc): | |
| # Page 26 carries a second image placed at y 802-1576 on an 842 pt page; | |
| # pages 29 and 54 carry one at negative y. The visible diagram must win. | |
| for pdf_page in (26, 29, 54): | |
| page = doc[pdf_page - 1] | |
| diagram = pdf_loader.select_diagram_image(page) | |
| rect = diagram.rect | |
| assert rect[1] >= 0, f"page {pdf_page} picked an image above the page" | |
| assert rect[3] <= page.rect.height + 1, ( | |
| f"page {pdf_page} picked an image below the page" | |
| ) | |
| # Page 26 specifically: xref 116 is on-page, 117 is the decoy below it. | |
| assert pdf_loader.select_diagram_image(doc[25]).xref == 116 | |
| def test_reused_xref_resolves_per_page(doc): | |
| # xref 152 is page 36's off-page second image and page 37's visible diagram, | |
| # so the diagram must be resolved per page rather than cached by xref. | |
| page36 = pdf_loader.select_diagram_image(doc[35]) | |
| page37 = pdf_loader.select_diagram_image(doc[36]) | |
| assert page36.xref != page37.xref | |
| assert page37.xref == 152 | |
| assert page36.pdf_page == 36 and page37.pdf_page == 37 | |
| def test_cached_png_matches_the_native_image(doc, tmp_path): | |
| from spareparts.index_db import png_size | |
| diagram = pdf_loader.load_diagram(doc, 34, tmp_path) | |
| assert diagram.png_path.name == "p34.png" | |
| assert png_size(diagram.png_path) == (diagram.width, diagram.height) | |