37 lines
1.8 KiB
Python
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}")
|