sundeep-news-scan/_gap_probe.py

41 lines
1.6 KiB
Python

import sys, json
sys.path.insert(0, "/Users/kranthikumar/Documents/telugu_extractor")
from pathlib import Path
import smart_extractor as se
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
def headline_above(regions, start_bboxes, body, max_gap):
cx = (body[0] + body[2]) / 2
cands = [r for r in regions
if (r.get("type") == "doc_title" or r.get("_promoted_from"))
and r["bbox"][0] <= cx <= r["bbox"][2]
and r["bbox"][3] <= body[1] + 40
and (body[1] - r["bbox"][3]) <= max_gap]
if not cands:
return None, None
h = max(cands, key=lambda r: r["bbox"][3])
gap = body[1] - h["bbox"][3]
for ob in start_bboxes:
if ob is body:
continue
ocx = (ob[0] + ob[2]) / 2
if h["bbox"][3] < ob[1] < body[1] and cx - 120 <= ocx <= cx + 120:
return None, gap
return h["id"], gap
for pg in (1, 2, 3, 4):
png = D / f"page_{pg:03d}.png"
regions = json.loads((D / f"page_{pg:03d}.regions.json").read_text())["regions"]
regions = se.drop_masthead_regions(regions, "andhra_jyothi", pg, png)
ds = se.find_article_starts_by_dateline(regions, str(png), "andhra_jyothi")
sb = [s["bbox"] for s in ds]
print(f"\n==== PAGE {pg} ====")
for s in ds:
rid = s["region_id"]
row = []
for g in (900, 1000, 1100, 1300):
hid, gap = headline_above(regions, sb, s["bbox"], g)
row.append(f"g{g}:R{hid}" )
print(f" DL R{rid:>3} gap_to_nearest_doc_title above -> " + " ".join(row))