sundeep-news-scan/_replay_crop_all.py

37 lines
1.8 KiB
Python

"""Re-crop EVERY article on all 4 pages using the EXISTING smart_extractor code
(no Claude / no paid API). Runs the FULL pre-processing chain the real pipeline uses
(dedup -> merge stacked titles -> drop masthead -> promote paragraph-titles -> dateline
scan -> separators -> cluster/crop), so the replay crops match real output. Tesseract
temp files are redirected off /tmp so OCR can read them. Output goes to a fresh dir."""
import os, tempfile, json
tempfile.tempdir = os.path.abspath("_tess_tmp") # keep Tesseract off /tmp
os.environ["TMPDIR"] = tempfile.tempdir
os.makedirs("_tess_tmp", exist_ok=True)
from pathlib import Path
import smart_extractor as se
from _lines import separator_barriers
RUN = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919")
PAGES = RUN / "pages"
OUT = RUN / "all_article_crops_new" # fresh output dir
PAPER = "andhra_jyothi"
for pg in (1, 2, 3, 4):
png = str(PAGES / f"page_{pg:03d}.png")
regions = json.loads((PAGES / f"page_{pg:03d}.regions.json").read_text())["regions"]
# Full pre-processing chain (matches the real pipeline order):
regions = se.dedup_overlapping_regions(regions)
regions = se.merge_stacked_title_lines(regions, png)
regions = se.drop_masthead_regions(regions, PAPER, pg, png)
regions = se.promote_paragraph_titles(regions, png, PAPER) # paragraph_title -> doc_title
dateline_starts = se.find_article_starts_by_dateline(regions, png, PAPER)
sep_lines = separator_barriers(png, regions)
n = se.crop_all_article_blocks(png, regions, str(OUT), pg,
dateline_starts=dateline_starts, sep_lines=sep_lines)
print(f"page {pg}: {len(dateline_starts)} datelines -> {n} article crop(s) written")
print(f"\nCrops written under: {OUT}")