41 lines
1.6 KiB
Python
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))
|