refactor: remove legacy debug logs, temporary test files, and obsolete analysis scripts
This commit is contained in:
parent
aac99aded7
commit
075c3d6722
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 12 crops, 9 datelines | Headline-strip:2, Floor-trim:2, orphan overlap:2
|
|
||||||
page 2: 18 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2
|
|
||||||
page 3: 14 crops, 7 datelines | bullet titles flagged:1
|
|
||||||
page 4: 21 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2, Block dateline split:2, Multi-column body:2
|
|
||||||
DONE -> output/AndhraJyothi_Siddipet District_20260602_20260603_144919/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 12 crops, 9 datelines | Headline-strip:2, Floor-trim:2, orphan overlap:2
|
|
||||||
page 2: 18 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2
|
|
||||||
page 3: 14 crops, 7 datelines | bullet titles flagged:1
|
|
||||||
page 4: 21 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2, Block dateline split:2, Multi-column body:2
|
|
||||||
DONE -> output/AndhraJyothi_Siddipet District_20260602_20260603_144919/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 12 crops, 9 datelines | Headline-strip:2, Floor-trim:2, orphan overlap:2
|
|
||||||
page 2: 18 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2
|
|
||||||
page 3: 14 crops, 7 datelines | bullet titles flagged:1
|
|
||||||
page 4: 21 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2, Block dateline split:2, Multi-column body:2
|
|
||||||
DONE -> output/AndhraJyothi_Siddipet District_20260602_20260603_144919/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 12 crops, 9 datelines | Headline-strip:2, Floor-trim:2, orphan overlap:2
|
|
||||||
page 2: 18 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2
|
|
||||||
page 3: 14 crops, 7 datelines | bullet titles flagged:1
|
|
||||||
page 4: 21 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2, Block dateline split:2, Multi-column body:2
|
|
||||||
DONE -> output/AndhraJyothi_Siddipet District_20260602_20260603_144919/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 12 crops, 9 datelines | Headline-strip:2, Floor-trim:2, orphan overlap:2
|
|
||||||
page 2: 18 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2
|
|
||||||
page 3: 14 crops, 7 datelines | bullet titles flagged:1
|
|
||||||
page 4: 21 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2, Block dateline split:2, Multi-column body:2
|
|
||||||
DONE -> output/AndhraJyothi_Siddipet District_20260602_20260603_144919/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 12 crops, 9 datelines | Headline-strip:2, Floor-trim:2, orphan overlap:2
|
|
||||||
page 2: 18 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2
|
|
||||||
page 3: 14 crops, 7 datelines | bullet titles flagged:1
|
|
||||||
page 4: 21 crops, 18 datelines | bullet titles flagged:1, Headline-strip:2, Block dateline split:2, Multi-column body:2
|
|
||||||
DONE -> output/AndhraJyothi_Siddipet District_20260602_20260603_144919/all_article_crops_final
|
|
||||||
4
_cls.txt
4
_cls.txt
|
|
@ -1,4 +0,0 @@
|
||||||
R16 text bbox=[119, 616, 612, 1899] phones=3 kw=[] :: జనగామ, మే 19 (నమస్తే తెలంగాణ) : ఆల్ ఇండియా కెమిస్
|
|
||||||
R89 paragraph_title bbox=[121, 2887, 595, 2978] phones=0 kw=['in the court'] :: IN THE COURT OF THE HONBLE JUNIOR CIVIL JUDGE AT G
|
|
||||||
R93 text bbox=[174, 4010, 545, 4080] phones=1 kw=['advocate'] :: ADVOCATE - JANGAON Cell: 9848259371
|
|
||||||
R87 text bbox=[150, 5143, 604, 6267] phones=8 kw=['classified', 'contact'] :: For Classified Ads Please Contact... 9182777552 HA
|
|
||||||
34
_cmp_mc.py
34
_cmp_mc.py
|
|
@ -1,34 +0,0 @@
|
||||||
import sys, json, contextlib, io
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
|
|
||||||
|
|
||||||
def blocks_for(pg, strip_mc):
|
|
||||||
png = D / f"page_{pg:03d}.png"
|
|
||||||
regs = json.loads((D / f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
regs = se.drop_masthead_regions(regs, "andhra_jyothi", pg, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, str(png), "andhra_jyothi")
|
|
||||||
bars = separator_barriers(str(png), regs)
|
|
||||||
if strip_mc:
|
|
||||||
bars = [{k: v for k, v in b.items() if k not in ("mc", "anchor")} for b in bars]
|
|
||||||
bl = se.cluster_all_article_blocks(regs, dateline_starts=ds, sep_lines=bars)
|
|
||||||
return {b["anchor_id"]: tuple(sorted(b["members"])) for b in bl}
|
|
||||||
|
|
||||||
|
|
||||||
for pg in (1, 2, 3, 4):
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
cur = blocks_for(pg, False)
|
|
||||||
base = blocks_for(pg, True)
|
|
||||||
print(f"==== PAGE {pg} ====")
|
|
||||||
changed = False
|
|
||||||
for k in sorted(set(cur) | set(base)):
|
|
||||||
if cur.get(k) != base.get(k):
|
|
||||||
changed = True
|
|
||||||
print(f" anchor {k}: base={base.get(k)}")
|
|
||||||
print(f" curr={cur.get(k)}")
|
|
||||||
if not changed:
|
|
||||||
print(" (no change from mc clamp)")
|
|
||||||
18
_dump_all.py
18
_dump_all.py
|
|
@ -1,18 +0,0 @@
|
||||||
import sys, json
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
png = D / "page_001.png"
|
|
||||||
regs0 = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
regs = se.drop_masthead_regions(regs0, "andhra_jyothi", 1, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, str(png), "andhra_jyothi")
|
|
||||||
bars = separator_barriers(str(png), regs)
|
|
||||||
bl = se.cluster_all_article_blocks(regs, dateline_starts=ds, sep_lines=bars)
|
|
||||||
allmem = set()
|
|
||||||
for b in sorted(bl, key=lambda b: (b["bbox"][1], b["bbox"][0])):
|
|
||||||
allmem |= set(b["members"])
|
|
||||||
print(f" {b['kind']:>1} anchor={b['anchor_id']:>3} bbox={b['bbox']} members={sorted(b['members'])}")
|
|
||||||
present = {r["id"] for r in regs if r.get("type") not in ("header","number")}
|
|
||||||
print("MISSING (not in any block):", sorted(present - allmem))
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
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))
|
|
||||||
36
_jg_base.log
36
_jg_base.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1483,838,4073,3081] 2590x2243 mem=13 {'text': 8, 'image': 3, 'figure_title': 2}
|
|
||||||
R 4 DL bbox=[105,846,1467,4295] 1362x3449 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,3089,3031,4921] 1533x1832 mem=13 {'text': 8, 'image': 1, 'doc_title': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,6269] 1042x2312 mem=4 {'text': 2, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,3211,6283] 1711x1271 mem=5 {'doc_title': 1, 'text': 2, 'figure_title': 1, 'image': 1}
|
|
||||||
[Containment-merge] x4
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
36
_jg_val.log
36
_jg_val.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=8 {'text': 7, 'image': 1}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,838,3031,4921] 1533x4083 mem=18 {'doc_title': 1, 'text': 9, 'image': 3, 'paragraph_title': 2, 'figure_title': 3}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,5748] 1042x1791 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
36
_jg_val2.log
36
_jg_val2.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=8 {'text': 7, 'image': 1}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,838,3031,4921] 1533x4083 mem=18 {'doc_title': 1, 'text': 9, 'image': 3, 'paragraph_title': 2, 'figure_title': 3}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,5748] 1042x1791 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
38
_jg_val3.log
38
_jg_val3.log
|
|
@ -1,38 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=8 {'text': 7, 'image': 1}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,838,3031,4921] 1533x4083 mem=18 {'doc_title': 1, 'text': 9, 'image': 3, 'paragraph_title': 2, 'figure_title': 3}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,5748] 1042x1791 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 78 F bbox=[123,4139,626,4285] 503x146 mem=1 {'image': 1} IMG-ONLY(no text) SINGLE-region
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 82 F bbox=[137,4423,618,4782] 481x359 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 44 F bbox=[133,4811,616,5113] 483x302 mem=1 {'text': 1} SINGLE-region
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
36
_jg_val4.log
36
_jg_val4.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=8 {'text': 7, 'image': 1}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,838,3031,4921] 1533x4083 mem=18 {'doc_title': 1, 'text': 9, 'image': 3, 'paragraph_title': 2, 'figure_title': 3}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,5748] 1042x1791 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
36
_jg_val5.log
36
_jg_val5.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=8 {'text': 7, 'image': 1}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,838,3031,4921] 1533x4083 mem=18 {'doc_title': 1, 'text': 9, 'image': 3, 'paragraph_title': 2, 'figure_title': 3}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,5748] 1042x1791 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
36
_jg_val6.log
36
_jg_val6.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=8 {'text': 7, 'image': 1}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,838,3031,4921] 1533x4083 mem=18 {'doc_title': 1, 'text': 9, 'image': 3, 'paragraph_title': 2, 'figure_title': 3}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,5748] 1042x1791 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
36
_jg_val7.log
36
_jg_val7.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=8 {'text': 7, 'image': 1}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,838,3031,4921] 1533x4083 mem=18 {'doc_title': 1, 'text': 9, 'image': 3, 'paragraph_title': 2, 'figure_title': 3}
|
|
||||||
R 2 DL bbox=[3039,3957,4081,5748] 1042x1791 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4087,1833] 1394x1428 mem=12 {'doc_title': 1, 'text': 7, 'image': 2, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,2023,2859] 1910x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[113,5731,3267,6318] 3154x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
36
_jg_val8.log
36
_jg_val8.log
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=13 {'text': 8, 'image': 3, 'figure_title': 2}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,3089,3031,4921] 1533x1832 mem=13 {'doc_title': 1, 'text': 8, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 2 DL bbox=[3092,3957,4079,4960] 987x1003 mem=1 {'text': 1} SINGLE-region
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=8 {'text': 3, 'image': 2, 'doc_title': 1, 'figure_title': 2}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4078,1567] 1385x1162 mem=11 {'doc_title': 1, 'text': 7, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=3 {'text': 1, 'image': 1, 'doc_title': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260609_130635/all_article_crops_review
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
R 3 DL bbox=[1497,137,4081,3023] 2584x2886 mem=13 {'text': 8, 'image': 3, 'figure_title': 2}
|
|
||||||
R 4 DL bbox=[105,145,1467,4295] 1362x4150 mem=15 {'text': 11, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 28 H bbox=[1498,3089,3031,4921] 1533x1832 mem=13 {'doc_title': 1, 'text': 8, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 2 DL bbox=[3092,3957,4079,4960] 987x1003 mem=1 {'text': 1} SINGLE-region
|
|
||||||
R 49 H RAW bbox=[106,4377,1429,6301] 1323x1924 mem=10 {'doc_title': 1, 'text': 5, 'image': 2, 'figure_title': 2}
|
|
||||||
R 29 H RAW bbox=[1500,5012,4081,6283] 2581x1271 mem=8 {'text': 3, 'image': 2, 'doc_title': 1, 'figure_title': 2}
|
|
||||||
[Containment-merge] x2
|
|
||||||
[Headline-merge] x2
|
|
||||||
[Banner rectangle] x4
|
|
||||||
|
|
||||||
=== page 2: 18 crops, 17 datelines ===
|
|
||||||
R109 H bbox=[119,393,612,1899] 493x1506 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 H bbox=[2693,405,4078,1567] 1385x1162 mem=11 {'doc_title': 1, 'text': 7, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 55 H RAW bbox=[679,415,2630,1919] 1951x1504 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R 77 H bbox=[2692,1594,4087,1903] 1395x309 mem=3 {'text': 1, 'image': 1, 'doc_title': 1}
|
|
||||||
R 14 DL bbox=[2045,1950,3265,3097] 1220x1147 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[113,1958,1975,2859] 1862x901 mem=8 {'text': 5, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 96 H bbox=[3326,1964,4087,3638] 761x1674 mem=4 {'doc_title': 1, 'text': 2, 'image': 1}
|
|
||||||
R 89 L bbox=[118,2887,595,4080] 477x1193 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 86 H bbox=[682,2894,1977,4292] 1295x1398 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 2, 'doc_title': 1}
|
|
||||||
R 64 H bbox=[2046,3116,3263,3907] 1217x791 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 97 H bbox=[3324,3756,4087,4627] 763x871 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 84 H bbox=[2046,3920,3264,4820] 1218x900 mem=6 {'text': 3, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 44 F bbox=[123,4139,626,5113] 503x974 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R112 H bbox=[682,4325,1975,5056] 1293x731 mem=5 {'text': 2, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 58 H bbox=[3322,4658,4087,5831] 765x1173 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R110 H bbox=[2044,4858,3265,5685] 1221x827 mem=7 {'doc_title': 1, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H RAW bbox=[680,5078,1975,5692] 1295x614 mem=5 {'doc_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 59 H RAW bbox=[680,5731,3267,6318] 2587x587 mem=7 {'doc_title': 2, 'text': 5}
|
|
||||||
R 7 DL bbox=[3308,5839,4087,6305] 779x466 mem=1 {'text': 1} SINGLE-region
|
|
||||||
[Containment-merge] x10
|
|
||||||
[Banner rectangle] x8
|
|
||||||
|
|
||||||
DONE -> output/NamastheTelangana_Jangaon_20260520_20260608_124720/all_article_crops_review
|
|
||||||
10
_lc3.txt
10
_lc3.txt
|
|
@ -1,10 +0,0 @@
|
||||||
AJ pg1: 12 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
AJ pg2: 18 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
AJ pg3: 14 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
AJ pg4: 20 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
NT pg1: 11 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
NT pg2: 22 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
NT pg3: 19 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
NT pg4: 24 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
JG pg1: 7 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
JG pg2: 12 blocks (baseline AJ 12/18/14/20 NT 11/22/19/25 JG 7/12)
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
AJ pg1 pitch755 hbars10 base12 | thr0.6: 12 (drop6) | thr0.8: 12 (drop7) | thr1.0: 12 (drop7)
|
|
||||||
AJ pg2 pitch719 hbars19 base18 | thr0.6: 18 (drop5) | thr0.8: 18 (drop8) | thr1.0: 18 (drop9)
|
|
||||||
AJ pg3 pitch728 hbars15 base14 | thr0.6: 14 (drop7) | thr0.8: 13 (drop9) | thr1.0: 13 (drop9)
|
|
||||||
AJ pg4 pitch728 hbars25 base20 | thr0.6: 20 (drop11) | thr0.8: 20 (drop13) | thr1.0: 20 (drop13)
|
|
||||||
NT pg1 pitch536 hbars24 base11 | thr0.6: 11 (drop5) | thr0.8: 11 (drop8) | thr1.0: 11 (drop9)
|
|
||||||
NT pg2 pitch527 hbars47 base22 | thr0.6: 22 (drop7) | thr0.8: 22 (drop10) | thr1.0: 22 (drop15)
|
|
||||||
NT pg3 pitch525 hbars25 base19 | thr0.6: 19 (drop3) | thr0.8: 19 (drop4) | thr1.0: 19 (drop7)
|
|
||||||
NT pg4 pitch523 hbars43 base25 | thr0.6: 25 (drop5) | thr0.8: 25 (drop8) | thr1.0: 21 (drop25)
|
|
||||||
JG pg1 pitch601 hbars15 base7 | thr0.6: 7 (drop5) | thr0.8: 7 (drop6) | thr1.0: 7 (drop9)
|
|
||||||
JG pg2 pitch594 hbars17 base12 | thr0.6: 12 (drop0) | thr0.8: 12 (drop0) | thr1.0: 12 (drop9)
|
|
||||||
416
_lines.py
416
_lines.py
|
|
@ -1,416 +0,0 @@
|
||||||
"""Separator-rule detection for newspaper pages (classical CV, no ML / no API).
|
|
||||||
|
|
||||||
Detects the thin printed grey/black straight lines the paper uses to divide
|
|
||||||
stories, with a TEXT-ISOLATION filter to reject false positives from dense
|
|
||||||
Telugu text (a real rule sits in a whitespace gutter; a text stroke has ink
|
|
||||||
immediately above/below it).
|
|
||||||
|
|
||||||
Public:
|
|
||||||
detect_separator_lines(png_path) -> {"h": [...], "v": [...], "size": (W,H)}
|
|
||||||
each line is a dict: {x1,y1,x2,y2,len,gray} (gray = mean intensity).
|
|
||||||
"""
|
|
||||||
import cv2
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
|
|
||||||
def _candidates(bw, horizontal, min_len, max_thick=55):
|
|
||||||
if horizontal:
|
|
||||||
k = cv2.getStructuringElement(cv2.MORPH_RECT, (min_len // 2, 1))
|
|
||||||
else:
|
|
||||||
k = cv2.getStructuringElement(cv2.MORPH_RECT, (1, min_len // 2))
|
|
||||||
opened = cv2.morphologyEx(bw, cv2.MORPH_OPEN, k, iterations=1)
|
|
||||||
# bridge small collinear gaps along the line direction
|
|
||||||
if horizontal:
|
|
||||||
opened = cv2.dilate(opened, cv2.getStructuringElement(cv2.MORPH_RECT, (25, 3)))
|
|
||||||
else:
|
|
||||||
opened = cv2.dilate(opened, cv2.getStructuringElement(cv2.MORPH_RECT, (3, 25)))
|
|
||||||
cnts, _ = cv2.findContours(opened, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
|
||||||
out = []
|
|
||||||
for c in cnts:
|
|
||||||
x, y, w, h = cv2.boundingRect(c)
|
|
||||||
if horizontal and w >= min_len and h <= max_thick:
|
|
||||||
out.append((x, y + h // 2, x + w, y + h // 2, w))
|
|
||||||
if (not horizontal) and h >= min_len and w <= max_thick:
|
|
||||||
out.append((x + w // 2, y, x + w // 2, y + h, h))
|
|
||||||
return out
|
|
||||||
|
|
||||||
|
|
||||||
def _isolated(gray, line, horizontal, ink_thresh=110, gap=(5, 16),
|
|
||||||
max_adjacent_ink=0.12):
|
|
||||||
"""A true separator sits in a whitespace gutter: the tight band on BOTH sides
|
|
||||||
(parallel to the line) is mostly paper. Returns (is_isolated, mean_gray)."""
|
|
||||||
H, W = gray.shape
|
|
||||||
x1, y1, x2, y2, ln = line
|
|
||||||
if horizontal:
|
|
||||||
seg = gray[y1, x1:x2]
|
|
||||||
lo, hi = gap
|
|
||||||
above = gray[max(0, y1 - hi):max(0, y1 - lo), x1:x2]
|
|
||||||
below = gray[min(H, y1 + lo):min(H, y1 + hi), x1:x2]
|
|
||||||
else:
|
|
||||||
seg = gray[y1:y2, x1]
|
|
||||||
lo, hi = gap
|
|
||||||
above = gray[y1:y2, max(0, x1 - hi):max(0, x1 - lo)]
|
|
||||||
below = gray[y1:y2, min(W, x1 + lo):min(W, x1 + hi)]
|
|
||||||
if seg.size == 0 or above.size == 0 or below.size == 0:
|
|
||||||
return False, 255
|
|
||||||
ink_a = float((above < ink_thresh).mean())
|
|
||||||
ink_b = float((below < ink_thresh).mean())
|
|
||||||
isolated = (ink_a <= max_adjacent_ink) and (ink_b <= max_adjacent_ink)
|
|
||||||
return isolated, float(seg.mean())
|
|
||||||
|
|
||||||
|
|
||||||
def detect_separator_lines(png_path, h_frac=0.045, v_frac=0.06):
|
|
||||||
img = cv2.imread(str(png_path))
|
|
||||||
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
|
||||||
H, W = gray.shape
|
|
||||||
blur = cv2.GaussianBlur(gray, (3, 3), 0)
|
|
||||||
bw = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
|
|
||||||
|
|
||||||
h_min = int(h_frac * W)
|
|
||||||
v_min = int(v_frac * H)
|
|
||||||
h_out, v_out = [], []
|
|
||||||
for ln in _candidates(bw, True, h_min):
|
|
||||||
iso, g = _isolated(gray, ln, True)
|
|
||||||
if iso:
|
|
||||||
h_out.append({"x1": ln[0], "y1": ln[1], "x2": ln[2], "y2": ln[3],
|
|
||||||
"len": ln[4], "gray": round(g, 1)})
|
|
||||||
for ln in _candidates(bw, False, v_min):
|
|
||||||
iso, g = _isolated(gray, ln, False)
|
|
||||||
if iso:
|
|
||||||
v_out.append({"x1": ln[0], "y1": ln[1], "x2": ln[2], "y2": ln[3],
|
|
||||||
"len": ln[4], "gray": round(g, 1)})
|
|
||||||
return {"h": h_out, "v": v_out, "size": (W, H)}
|
|
||||||
|
|
||||||
|
|
||||||
def detect_content_bottom(png_path, search_frac=0.12, color_thr=0.06,
|
|
||||||
blank_color=0.02, blank_ink=0.035, peak_thr=0.15,
|
|
||||||
max_band=160, min_gap=25, min_margin=18):
|
|
||||||
"""Find the y below which a page holds only the printer's COLOUR-CALIBRATION
|
|
||||||
strip (the row of CMYK registration dots + grey bars) and the bottom paper
|
|
||||||
margin — i.e. the bottom of real article content.
|
|
||||||
|
|
||||||
The calibration strip is a thin band of strongly-saturated colour dots near
|
|
||||||
the page bottom, isolated by a white paper margin BELOW it (down to the page
|
|
||||||
edge) and a white gap ABOVE it (separating it from article content). Crops
|
|
||||||
should be clamped to the returned y so the dots never bleed into an article.
|
|
||||||
|
|
||||||
Returns the y at the TOP of the calibration band, or the full page height H
|
|
||||||
when no such strip is found (nothing to clamp)."""
|
|
||||||
img = cv2.imread(str(png_path))
|
|
||||||
if img is None:
|
|
||||||
return None
|
|
||||||
H, W = img.shape[:2]
|
|
||||||
b, g, r = img[..., 0].astype(np.int16), img[..., 1].astype(np.int16), img[..., 2].astype(np.int16)
|
|
||||||
mx = np.maximum(np.maximum(r, g), b)
|
|
||||||
mn = np.minimum(np.minimum(r, g), b)
|
|
||||||
sat = mx - mn
|
|
||||||
colored = (sat > 55) & (mx > 80) # saturated colour (registration dots)
|
|
||||||
dark = mx < 110 # ink / dark
|
|
||||||
col_frac = colored.mean(axis=1) # per-row colour fraction
|
|
||||||
ink_frac = dark.mean(axis=1) # per-row ink fraction
|
|
||||||
blank = (col_frac < blank_color) & (ink_frac < blank_ink)
|
|
||||||
|
|
||||||
y0 = int(H * (1 - search_frac))
|
|
||||||
# The calibration strip is a band of strongly-coloured rows; identify it as the
|
|
||||||
# bottom-most run of rows whose colour fraction clears `color_thr`.
|
|
||||||
strip_rows = [y for y in range(y0, H) if col_frac[y] >= color_thr]
|
|
||||||
if not strip_rows:
|
|
||||||
return H # no coloured strip near the bottom
|
|
||||||
band_bottom = strip_rows[-1]
|
|
||||||
# A real calibration strip is followed by white paper margin to the page edge.
|
|
||||||
below = blank[band_bottom + 1:H]
|
|
||||||
if below.size < min_margin or float(below.mean()) < 0.9:
|
|
||||||
return H
|
|
||||||
# Walk up from band_bottom while still in the coloured band (tolerate the small
|
|
||||||
# white gaps between dot rows).
|
|
||||||
band_top = band_bottom
|
|
||||||
gap = 0
|
|
||||||
y = band_bottom - 1
|
|
||||||
while y > y0:
|
|
||||||
if col_frac[y] >= color_thr:
|
|
||||||
band_top = y
|
|
||||||
gap = 0
|
|
||||||
else:
|
|
||||||
gap += 1
|
|
||||||
if gap > 12:
|
|
||||||
break
|
|
||||||
y -= 1
|
|
||||||
if (band_bottom - band_top + 1) > max_band:
|
|
||||||
return H # too tall -> fused with a photo, bail
|
|
||||||
# A genuine printer calibration strip is a dense row of saturated CMYK
|
|
||||||
# registration dots: its peak per-row colour fraction is high (~0.22-0.45 across
|
|
||||||
# Andhra Jyothi / Sakshi). A single-hue coloured ad/notice box embedded in
|
|
||||||
# article text peaks far lower (~0.11) -> reject it as a false positive.
|
|
||||||
peak = float(col_frac[band_top:band_bottom + 1].max())
|
|
||||||
if peak < peak_thr:
|
|
||||||
return H
|
|
||||||
return band_top
|
|
||||||
|
|
||||||
|
|
||||||
def _hspan_overlap(ax1, ax2, bx1, bx2):
|
|
||||||
ix = max(0, min(ax2, bx2) - max(ax1, bx1))
|
|
||||||
return ix / max(1, min(ax2 - ax1, bx2 - bx1))
|
|
||||||
|
|
||||||
|
|
||||||
def _faint_rule_above(gray, hbbox, max_gap=170, min_gap=6, gray_lo=140, gray_hi=215,
|
|
||||||
cover=0.6, max_dark=0.06):
|
|
||||||
"""Find a faint GREY horizontal rule sitting in the whitespace directly above a
|
|
||||||
(multi-column) header. Such a light rule reads as background to the ink-based
|
|
||||||
Otsu detector in `detect_separator_lines`, so we look for a thin row that is
|
|
||||||
mostly uniform mid-grey across the header's width and is isolated by white paper
|
|
||||||
above and below. Returns the rule's y, or None. (Used only above multi-column
|
|
||||||
headers, where it marks the article's TOP boundary.)"""
|
|
||||||
H, W = gray.shape
|
|
||||||
hx1, hy, hx2 = hbbox[0], hbbox[1], hbbox[2]
|
|
||||||
y_hi = max(0, hy - min_gap)
|
|
||||||
y_lo = max(0, hy - max_gap)
|
|
||||||
for y in range(y_hi, y_lo, -1):
|
|
||||||
row = gray[y, hx1:hx2].astype(np.int16)
|
|
||||||
if row.size == 0:
|
|
||||||
continue
|
|
||||||
mid = float(((row >= gray_lo) & (row <= gray_hi)).mean())
|
|
||||||
dark = float((row < gray_lo).mean())
|
|
||||||
if mid >= cover and dark <= max_dark:
|
|
||||||
above = gray[max(0, y - 6):max(0, y - 2), hx1:hx2]
|
|
||||||
below = gray[min(H, y + 2):min(H, y + 6), hx1:hx2]
|
|
||||||
if (above.size and below.size
|
|
||||||
and float((above > gray_hi).mean()) > 0.85
|
|
||||||
and float((below > gray_hi).mean()) > 0.85):
|
|
||||||
return y
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def _faint_grey_band_above(gray, hbbox, max_gap=185, min_gap=6, max_thick=12,
|
|
||||||
gray_lo=135, gray_hi=232, cover=0.8, max_dark=0.08,
|
|
||||||
white_thr=235, white_cover=0.9):
|
|
||||||
"""Find a faint GREY horizontal rule (1-`max_thick` px thick) sitting in the
|
|
||||||
whitespace directly above a SINGLE-column header. Per the layout convention a
|
|
||||||
grey rule whose length matches the article/header width marks the boundary
|
|
||||||
between two stacked stories, so the next story's headline must not fold into
|
|
||||||
the article above the rule. Such light rules read as background to the ink-based
|
|
||||||
Otsu detector in `detect_separator_lines`, and `_faint_rule_above` only accepts
|
|
||||||
a 1-px isolated rule, so a thicker grey band is missed; here we group the band
|
|
||||||
and require it to span the header's width and be isolated by white paper above
|
|
||||||
and below. Returns the band's centre y, or None."""
|
|
||||||
H, W = gray.shape
|
|
||||||
hx1, hy, hx2 = int(hbbox[0]), int(hbbox[1]), int(hbbox[2])
|
|
||||||
y_hi = max(0, hy - min_gap)
|
|
||||||
y_lo = max(0, hy - max_gap)
|
|
||||||
cols = slice(hx1, hx2)
|
|
||||||
grey_rows = []
|
|
||||||
for y in range(y_lo, y_hi):
|
|
||||||
row = gray[y, cols].astype(np.int16)
|
|
||||||
if row.size == 0:
|
|
||||||
continue
|
|
||||||
mid = float(((row >= gray_lo) & (row <= gray_hi)).mean())
|
|
||||||
dark = float((row < gray_lo).mean())
|
|
||||||
if mid >= cover and dark <= max_dark:
|
|
||||||
grey_rows.append(y)
|
|
||||||
if not grey_rows:
|
|
||||||
return None
|
|
||||||
bands = []
|
|
||||||
s = p = grey_rows[0]
|
|
||||||
for y in grey_rows[1:]:
|
|
||||||
if y == p + 1:
|
|
||||||
p = y
|
|
||||||
else:
|
|
||||||
bands.append((s, p)); s = p = y
|
|
||||||
bands.append((s, p))
|
|
||||||
for top, bot in sorted(bands, key=lambda b: -b[1]): # nearest the header first
|
|
||||||
if bot - top + 1 > max_thick:
|
|
||||||
continue
|
|
||||||
above = gray[max(0, top - 4):top, cols]
|
|
||||||
below = gray[bot + 1:min(H, bot + 5), cols]
|
|
||||||
if (above.size and below.size
|
|
||||||
and float((above > white_thr).mean()) >= white_cover
|
|
||||||
and float((below > white_thr).mean()) >= white_cover):
|
|
||||||
return (top + bot) // 2
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def _faint_grey_band_below(gray, bbox, max_gap=150, min_gap=4, max_thick=12,
|
|
||||||
gray_lo=135, gray_hi=232, cover=0.8, max_dark=0.08,
|
|
||||||
white_thr=235, white_cover=0.9):
|
|
||||||
"""Mirror of `_faint_grey_band_above`, searching DOWNWARD: find the faint grey
|
|
||||||
rule that sits in the whitespace just below an article (within `max_gap` px of
|
|
||||||
its bottom edge) and spans its column width. That rule is the article's BOTTOM
|
|
||||||
boundary, so the crop can be cut precisely at it. Returns the band's top y (the
|
|
||||||
cut line), or None when no clean full-width grey rule is found below."""
|
|
||||||
H, W = gray.shape
|
|
||||||
bx1, by, bx2 = int(bbox[0]), int(bbox[3]), int(bbox[2])
|
|
||||||
y_lo = min(H, by + min_gap)
|
|
||||||
y_hi = min(H, by + max_gap)
|
|
||||||
cols = slice(bx1, bx2)
|
|
||||||
grey_rows = []
|
|
||||||
for y in range(y_lo, y_hi):
|
|
||||||
row = gray[y, cols].astype(np.int16)
|
|
||||||
if row.size == 0:
|
|
||||||
continue
|
|
||||||
mid = float(((row >= gray_lo) & (row <= gray_hi)).mean())
|
|
||||||
dark = float((row < gray_lo).mean())
|
|
||||||
if mid >= cover and dark <= max_dark:
|
|
||||||
grey_rows.append(y)
|
|
||||||
if not grey_rows:
|
|
||||||
return None
|
|
||||||
bands = []
|
|
||||||
s = p = grey_rows[0]
|
|
||||||
for y in grey_rows[1:]:
|
|
||||||
if y == p + 1:
|
|
||||||
p = y
|
|
||||||
else:
|
|
||||||
bands.append((s, p)); s = p = y
|
|
||||||
bands.append((s, p))
|
|
||||||
for top, bot in sorted(bands, key=lambda b: b[0]): # nearest below first
|
|
||||||
if bot - top + 1 > max_thick:
|
|
||||||
continue
|
|
||||||
# Skip the 1-px anti-aliased fade row hugging the rule before checking for
|
|
||||||
# the white paper gutter above and below it.
|
|
||||||
above = gray[max(0, top - 7):max(0, top - 2), cols]
|
|
||||||
below = gray[bot + 2:min(H, bot + 7), cols]
|
|
||||||
if (above.size and below.size
|
|
||||||
and float((above > white_thr).mean()) >= white_cover
|
|
||||||
and float((below > white_thr).mean()) >= white_cover):
|
|
||||||
return top
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def separator_barriers(png_path, regions, near=80, min_overlap=0.3,
|
|
||||||
title_types=("doc_title", "paragraph_title", "figure_title"),
|
|
||||||
multicol_frac=0.22):
|
|
||||||
"""Article-boundary rules: the horizontal printed lines that mark the END of a
|
|
||||||
story. Per the layout convention, a rule with NORMAL text (or whitespace) above
|
|
||||||
it separates two stacked articles, while a rule sitting right under a BOLD
|
|
||||||
headline/title is a decorative flourish and must NOT split anything.
|
|
||||||
|
|
||||||
We approximate 'bold above' by a title-type region (doc_title / paragraph_title
|
|
||||||
/ figure_title) whose bottom edge is within `near` px above the rule and that
|
|
||||||
horizontally overlaps it. Such rules are dropped; the rest are returned as
|
|
||||||
barriers {y, x1, x2} for the clusterer to forbid cross-line folding.
|
|
||||||
|
|
||||||
Additionally, for every MULTI-COLUMN header (a doc_title at least `multicol_frac`
|
|
||||||
of the page width), we look for a faint grey rule directly above it and add it as
|
|
||||||
a barrier spanning the header's width: that rule is the article's TOP boundary, so
|
|
||||||
nothing above it folds into the multi-column article below."""
|
|
||||||
res = detect_separator_lines(png_path)
|
|
||||||
|
|
||||||
# A real article separator sits in a WHITESPACE GUTTER between two stacked
|
|
||||||
# boxes; it never lands deep inside a body-text region. PaddleOCR's morphology
|
|
||||||
# occasionally mistakes a dense Telugu text stroke for a thin rule, producing a
|
|
||||||
# phantom line straight through a paragraph. Reject any detected rule whose
|
|
||||||
# midpoint falls well inside (margin-shrunk) a 'text' box it column-overlaps.
|
|
||||||
_text_boxes = [r["bbox"] for r in regions if r.get("type") == "text"]
|
|
||||||
|
|
||||||
def _in_text(y, lx1, lx2, margin=28):
|
|
||||||
mx = (lx1 + lx2) / 2
|
|
||||||
for tx1, ty1, tx2, ty2 in _text_boxes:
|
|
||||||
if (tx1 <= mx <= tx2
|
|
||||||
and ty1 + margin <= y <= ty2 - margin
|
|
||||||
and _hspan_overlap(lx1, lx2, tx1, tx2) >= min_overlap):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Column width (median text-region width). A horizontal line counts as an article
|
|
||||||
# separator only when it spans most of a column. NOTE: a strict ≥1.0× column floor is
|
|
||||||
# too aggressive — a SINGLE-column article's own boundary rule is itself <1 column wide,
|
|
||||||
# so ≥1.0× drops real separators and merges articles (measured: NT pg4 R121 -> 2 datelines).
|
|
||||||
# 0.6× column is the safe floor: it removes only the short caption / decorative underlines
|
|
||||||
# and merges NO articles on AJ / NT / JG.
|
|
||||||
_twid = sorted((r["bbox"][2] - r["bbox"][0]) for r in regions if r.get("type") == "text")
|
|
||||||
_pitch = _twid[len(_twid) // 2] if _twid else 0
|
|
||||||
_len_floor = 0.6 * _pitch
|
|
||||||
|
|
||||||
bars = []
|
|
||||||
for L in res["h"]:
|
|
||||||
y, lx1, lx2 = L["y1"], L["x1"], L["x2"]
|
|
||||||
if _in_text(y, lx1, lx2):
|
|
||||||
continue
|
|
||||||
if _pitch and (lx2 - lx1) < _len_floor:
|
|
||||||
continue # too short to be an article separator (caption/underline)
|
|
||||||
bold_above = False
|
|
||||||
title_w_above = 0
|
|
||||||
for r in regions:
|
|
||||||
b = r["bbox"]
|
|
||||||
if (b[3] <= y and (y - b[3]) <= near
|
|
||||||
and r.get("type") in title_types
|
|
||||||
and _hspan_overlap(lx1, lx2, b[0], b[2]) >= min_overlap):
|
|
||||||
bold_above = True
|
|
||||||
title_w_above = max(title_w_above, b[2] - b[0])
|
|
||||||
# A rule under a bold title is a decorative flourish ONLY when it merely
|
|
||||||
# underlines that title (rule width ≈ title width). A rule spanning much
|
|
||||||
# WIDER than the title above it runs across several columns — e.g. a photo
|
|
||||||
# caption (figure_title) sits above ONE column while the rule runs the FULL
|
|
||||||
# article width — so it is a genuine article boundary and must be kept.
|
|
||||||
if (not bold_above) or ((lx2 - lx1) > 1.5 * title_w_above):
|
|
||||||
bars.append({"y": y, "x1": lx1, "x2": lx2})
|
|
||||||
|
|
||||||
gray = cv2.cvtColor(cv2.imread(str(png_path)), cv2.COLOR_BGR2GRAY)
|
|
||||||
W = gray.shape[1]
|
|
||||||
_img_boxes = [r["bbox"] for r in regions if r.get("type") == "image"]
|
|
||||||
|
|
||||||
def _lead_photo_above(yb, hx1, hx2, gap=80):
|
|
||||||
"""A faint rule directly under the article's OWN lead photo is that photo's
|
|
||||||
caption underline, not the article's top boundary. If an image sits flush
|
|
||||||
(within `gap`px) above the rule and overlaps the header's width, the rule must
|
|
||||||
NOT bound the article — otherwise the lead photo gets cut off."""
|
|
||||||
for ix1, iy1, ix2, iy2 in _img_boxes:
|
|
||||||
if (0 <= yb - iy2 <= gap
|
|
||||||
and _hspan_overlap(hx1, hx2, ix1, ix2) >= min_overlap):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
for r in regions:
|
|
||||||
if r.get("type") != "doc_title":
|
|
||||||
continue
|
|
||||||
b = r["bbox"]
|
|
||||||
if (b[2] - b[0]) < multicol_frac * W:
|
|
||||||
continue # single-column header -> skip
|
|
||||||
yb = _faint_rule_above(gray, b)
|
|
||||||
if yb is not None and not _lead_photo_above(yb, b[0], b[2]):
|
|
||||||
bars.append({"y": yb, "x1": b[0], "x2": b[2],
|
|
||||||
"mc": True, "anchor": r["id"]})
|
|
||||||
|
|
||||||
# Same rule for SINGLE-column headers: a faint grey rule spanning the header's
|
|
||||||
# width directly above it bounds the article ABOVE it, so the header (and its
|
|
||||||
# story) cannot fold upward across the rule. Plain barrier (no mc clamp).
|
|
||||||
for r in regions:
|
|
||||||
if r.get("type") not in ("doc_title", "paragraph_title"):
|
|
||||||
continue
|
|
||||||
b = r["bbox"]
|
|
||||||
if (b[2] - b[0]) >= multicol_frac * W:
|
|
||||||
continue # multi-column -> handled above
|
|
||||||
yb = _faint_grey_band_above(gray, b)
|
|
||||||
if yb is not None and not _lead_photo_above(yb, b[0], b[2]):
|
|
||||||
bars.append({"y": yb, "x1": b[0], "x2": b[2]})
|
|
||||||
|
|
||||||
# Vertical column-divider rules. detect_separator_lines already requires each
|
|
||||||
# line to sit in a whitespace gutter (isolated on both sides), so photo/text
|
|
||||||
# internal strokes are filtered out. These fence rightward column-growth: an
|
|
||||||
# article must not grow across a printed vertical rule into the next column.
|
|
||||||
for L in res["v"]:
|
|
||||||
bars.append({"vert": True, "x": (L["x1"] + L["x2"]) // 2,
|
|
||||||
"y1": min(L["y1"], L["y2"]), "y2": max(L["y1"], L["y2"])})
|
|
||||||
return bars
|
|
||||||
|
|
||||||
|
|
||||||
def overlay(png_path, lines, out_path):
|
|
||||||
img = cv2.imread(str(png_path))
|
|
||||||
for L in lines["h"]:
|
|
||||||
cv2.line(img, (L["x1"], L["y1"]), (L["x2"], L["y2"]), (0, 0, 255), 6)
|
|
||||||
for L in lines["v"]:
|
|
||||||
cv2.line(img, (L["x1"], L["y1"]), (L["x2"], L["y2"]), (255, 0, 0), 6)
|
|
||||||
cv2.imwrite(str(out_path), img)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
import sys
|
|
||||||
from pathlib import Path
|
|
||||||
p = Path(sys.argv[1])
|
|
||||||
res = detect_separator_lines(p)
|
|
||||||
print(f"{p.name} {res['size']} H={len(res['h'])} V={len(res['v'])}")
|
|
||||||
for L in sorted(res["h"], key=lambda d: d["y1"]):
|
|
||||||
print(f" H y={L['y1']:>5} x[{L['x1']:>4}..{L['x2']:>4}] len={L['len']:>4} gray={L['gray']}")
|
|
||||||
for L in sorted(res["v"], key=lambda d: d["x1"]):
|
|
||||||
print(f" V x={L['x1']:>5} y[{L['y1']:>4}..{L['y2']:>4}] len={L['len']:>4} gray={L['gray']}")
|
|
||||||
out = Path(sys.argv[2]) if len(sys.argv) > 2 else Path(f"/tmp/lines_{p.stem}.png")
|
|
||||||
overlay(p, res, out)
|
|
||||||
print("overlay:", out)
|
|
||||||
4
_nt4.txt
4
_nt4.txt
|
|
@ -1,4 +0,0 @@
|
||||||
WITH ≥1col floor: 24 blocks
|
|
||||||
R67 H 4DL members=[5, 7, 28, 34, 42, 48, 50, 67, 68, 73, 74, 80, 100, 102, 107, 127, 135]
|
|
||||||
R121 H 2DL members=[12, 14, 21, 39, 59, 111, 116, 121]
|
|
||||||
anchors: R23,R67,R81,R85,R87,R89,R90,R91,R93,R94,R95,R96,R97,R98,R101,R103,R108,R118,R119,R121,R122,R128,R131,R132
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110, 105] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 28 crops, 25 datelines, 2+dl-blocks=[80] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
page 1: 11 crops, 11 datelines, 2+dl-blocks=none | Caption bound:4, Headline-strip:8, Multi-column body:4
|
|
||||||
page 2: 23 crops, 22 datelines, 2+dl-blocks=[110] |
|
|
||||||
page 3: 20 crops, 21 datelines, 2+dl-blocks=[54, 62] |
|
|
||||||
page 4: 25 crops, 25 datelines, 2+dl-blocks=[67, 121] |
|
|
||||||
DONE -> output/NamastheTelangana_Siddipet_20260602_20260604_214937/all_article_crops_final
|
|
||||||
179
_nta.log
179
_nta.log
|
|
@ -1,179 +0,0 @@
|
||||||
=== page 1: 5 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL5 [668,901,4084,6302] 3416x5401 mem=22
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 5 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL5 [668,901,4084,6302] 3416x5401 mem=22
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 5 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL5 [668,901,4084,6302] 3416x5401 mem=22
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 5 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL5 [668,901,4084,6302] 3416x5401 mem=22
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 5 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL5 [668,901,4084,6302] 3416x5401 mem=22
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 5 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL5 [668,901,4084,6302] 3416x5401 mem=22
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 5 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL5 [668,901,4084,6302] 3416x5401 mem=22
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
295
_nta2.log
295
_nta2.log
|
|
@ -1,295 +0,0 @@
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL56 [1265,901,4079,4724] 2814x3823 mem=11
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL56 [1265,901,4079,4724] 2814x3823 mem=11
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL56 [1265,901,4079,4724] 2814x3823 mem=11
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL56 [1265,901,4079,4724] 2814x3823 mem=11
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL56 [1265,901,4079,4724] 2814x3823 mem=11
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL56 [1265,901,4079,4724] 2814x3823 mem=11
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=21
|
|
||||||
DL56 [1265,901,4079,4724] 2814x3823 mem=11
|
|
||||||
DL9 [105,2334,1197,6302] 1092x3968 mem=5
|
|
||||||
H59 [112,2762,3229,4860] 3117x2098 mem=13
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
DONE -> output/NamastheTelangana_Adilabad_20260528_20260610_160056/all_article_crops_review
|
|
||||||
281
_nta3.log
281
_nta3.log
|
|
@ -1,281 +0,0 @@
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 2: 30 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,4979] 468x1493 mem=3
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [610,4170,1497,4966] 887x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
DL26 [154,4987,1498,5443] 1344x456 mem=3
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [114,5467,1498,6269] 1384x802 mem=3
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [590,5993,1498,6302] 908x309 mem=2
|
|
||||||
=== page 2: 30 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,4979] 468x1493 mem=3
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [610,4170,1497,4966] 887x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
DL26 [154,4987,1498,5443] 1344x456 mem=3
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [114,5467,1498,6269] 1384x802 mem=3
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [590,5993,1498,6302] 908x309 mem=2
|
|
||||||
=== page 2: 30 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,4979] 468x1493 mem=3
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [610,4170,1497,4966] 887x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
DL26 [154,4987,1498,5443] 1344x456 mem=3
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [114,5467,1498,6269] 1384x802 mem=3
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [590,5993,1498,6302] 908x309 mem=2
|
|
||||||
=== page 2: 30 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,4979] 468x1493 mem=3
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [610,4170,1497,4966] 887x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
DL26 [154,4987,1498,5443] 1344x456 mem=3
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [114,5467,1498,6269] 1384x802 mem=3
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [590,5993,1498,6302] 908x309 mem=2
|
|
||||||
=== page 2: 30 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,4979] 468x1493 mem=3
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [610,4170,1497,4966] 887x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
DL26 [154,4987,1498,5443] 1344x456 mem=3
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [114,5467,1498,6269] 1384x802 mem=3
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [590,5993,1498,6302] 908x309 mem=2
|
|
||||||
=== page 2: 30 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,4979] 468x1493 mem=3
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [610,4170,1497,4966] 887x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
DL26 [154,4987,1498,5443] 1344x456 mem=3
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [114,5467,1498,6269] 1384x802 mem=3
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [590,5993,1498,6302] 908x309 mem=2
|
|
||||||
=== page 2: 30 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,4979] 468x1493 mem=3
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [610,4170,1497,4966] 887x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
DL26 [154,4987,1498,5443] 1344x456 mem=3
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [114,5467,1498,6269] 1384x802 mem=3
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [590,5993,1498,6302] 908x309 mem=2
|
|
||||||
DONE -> output/NamastheTelangana_Adilabad_20260528_20260610_160056/all_article_crops_review
|
|
||||||
295
_nta4.log
295
_nta4.log
|
|
@ -1,295 +0,0 @@
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 1: 6 crops, 6 datelines ===
|
|
||||||
H44 [106,111,4084,3144] 3978x3033 mem=23
|
|
||||||
DL9 [105,2334,1200,6302] 1095x3968 mem=6
|
|
||||||
DL13 [1320,2761,4079,4724] 2759x1963 mem=14
|
|
||||||
H59 [115,3752,3228,4860] 3113x1108 mem=7
|
|
||||||
H41 [2577,4793,4084,6309] 1507x1516 mem=4
|
|
||||||
H30 [668,4829,3208,6302] 2540x1473 mem=11
|
|
||||||
─ NT late rule-split: R5 → 2 bands at structural rules [4764]
|
|
||||||
🖼 Orphan photo: R38 → article R5 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
=== page 2: 31 crops, 30 datelines ===
|
|
||||||
H80 [1833,465,3228,1814] 1395x1349 mem=6
|
|
||||||
H65 [3293,465,4079,987] 786x522 mem=2
|
|
||||||
H84 [106,501,1776,1820] 1670x1319 mem=6
|
|
||||||
H43 [3292,1014,4079,1562] 787x548 mem=2
|
|
||||||
DL9 [3292,1590,4079,2136] 787x546 mem=2
|
|
||||||
H78 [1838,1678,2517,1805] 679x127 mem=2
|
|
||||||
DL7 [104,1851,923,2566] 819x715 mem=3
|
|
||||||
H74 [981,1883,2350,3060] 1369x1177 mem=4
|
|
||||||
H72 [2408,1884,3227,2713] 819x829 mem=2
|
|
||||||
DL5 [3292,2167,4079,2759] 787x592 mem=2
|
|
||||||
DL23 [104,2596,922,2998] 818x402 mem=2
|
|
||||||
H58 [2408,2772,3226,3479] 818x707 mem=2
|
|
||||||
DL13 [3292,2787,4079,3333] 787x546 mem=2
|
|
||||||
DL20 [106,3050,923,3478] 817x428 mem=2
|
|
||||||
H60 [981,3117,2351,3479] 1370x362 mem=3
|
|
||||||
DL1 [3293,3382,4079,4190] 786x808 mem=2
|
|
||||||
P67 [131,3486,599,5211] 468x1725 mem=4
|
|
||||||
DL10 [1559,3528,3226,4291] 1667x763 mem=4
|
|
||||||
P63 [677,3558,1499,4144] 822x586 mem=2
|
|
||||||
H50 [678,4170,1497,4966] 819x796 mem=2
|
|
||||||
DL12 [3292,4217,4079,4815] 787x598 mem=2
|
|
||||||
H71 [1560,4365,3226,4958] 1666x593 mem=3
|
|
||||||
H51 [3292,4842,4079,5479] 787x637 mem=2
|
|
||||||
DL41 [1561,4960,3225,5110] 1664x150 mem=2
|
|
||||||
H54 [678,4987,1498,5443] 820x456 mem=2
|
|
||||||
H76 [1559,5171,3228,5881] 1669x710 mem=5
|
|
||||||
H53 [677,5467,1498,5964] 821x497 mem=2
|
|
||||||
H83 [3291,5509,4079,6303] 788x794 mem=3
|
|
||||||
H56 [1559,5944,3228,6302] 1669x358 mem=3
|
|
||||||
H46 [680,5993,1498,6302] 818x309 mem=2
|
|
||||||
O79 [152,6141,590,6257] 438x116 mem=1
|
|
||||||
🖼 Orphan photo: R90 → article R67 (an image must belong to an article)
|
|
||||||
DONE -> output/NamastheTelangana_Adilabad_20260528_20260610_160056/all_article_crops_review
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
import sys, json, contextlib, io
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
for pg in (2, 3, 4):
|
|
||||||
png = D / f"page_{pg:03d}.png"
|
|
||||||
regs = json.loads((D / f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
regs = se.drop_masthead_regions(regs, "andhra_jyothi", pg, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, str(png), "andhra_jyothi")
|
|
||||||
bars = separator_barriers(str(png), regs)
|
|
||||||
bl = se.cluster_all_article_blocks(regs, dateline_starts=ds, sep_lines=bars)
|
|
||||||
dl_ids = {s["region_id"] for s in ds}
|
|
||||||
n_dl = sum(1 for b in bl if any(m in dl_ids for m in b["members"]))
|
|
||||||
orph = [b for b in bl if b["kind"] == "O"]
|
|
||||||
print(f"==== PAGE {pg}: {len(bl)} blocks, {n_dl} dateline, {len(orph)} orphan ====")
|
|
||||||
for b in orph:
|
|
||||||
print(f" O anchor={b['anchor_id']} bbox={b['bbox']} members={sorted(b['members'])}")
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
"""TEST (read-only): finalize article boundaries using the RIGHTMOST dead-end (nearest big
|
|
||||||
vertical wall to the right, else page edge) and the TOPMOST dead-end (masthead bottom, for
|
|
||||||
top-row articles). Draw both the original block boundary (thin gray) and the dead-end-snapped
|
|
||||||
boundary (thick colour) on a blank canvas, plus the big vertical walls (red) and the masthead
|
|
||||||
band. No smart_extractor change, no API. Test on 1-2 pages."""
|
|
||||||
import os, tempfile, json, io, contextlib, statistics
|
|
||||||
tempfile.tempdir = os.path.abspath("_tess_tmp"); os.environ["TMPDIR"] = tempfile.tempdir
|
|
||||||
os.makedirs("_tess_tmp", exist_ok=True)
|
|
||||||
from pathlib import Path
|
|
||||||
from PIL import Image, ImageDraw, ImageFont
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers, detect_separator_lines
|
|
||||||
|
|
||||||
BIG_FRAC = 0.45
|
|
||||||
|
|
||||||
def big_walls(png):
|
|
||||||
res = detect_separator_lines(png); W, H = res["size"]
|
|
||||||
out = []
|
|
||||||
for L in res["v"]:
|
|
||||||
y1, y2 = min(L["y1"], L["y2"]), max(L["y1"], L["y2"])
|
|
||||||
if (y2 - y1) >= BIG_FRAC * H:
|
|
||||||
out.append({"x": (L["x1"]+L["x2"])//2, "y1": y1, "y2": y2})
|
|
||||||
return out, (W, H)
|
|
||||||
|
|
||||||
def masthead_bottom(png, raw, paper, pg, W, H):
|
|
||||||
# compute from RAW regions (before masthead removal) so the dropped band's bottom is visible
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
dd = se.dedup_overlapping_regions([dict(r) for r in raw])
|
|
||||||
kept = se.drop_masthead_regions([dict(r) for r in dd], paper, pg, png)
|
|
||||||
drop_bottom = max((r["bbox"][3] for r in dd
|
|
||||||
if r["id"] not in {k["id"] for k in kept}), default=0)
|
|
||||||
res = detect_separator_lines(png)
|
|
||||||
wide = sorted([L for L in res["h"] if (L["x2"]-L["x1"]) >= 0.30*W
|
|
||||||
and L["y1"] < 0.20*H], key=lambda L: L["y1"])
|
|
||||||
top_rule = wide[0]["y1"] if wide else 0
|
|
||||||
return max(drop_bottom, top_rule)
|
|
||||||
|
|
||||||
def run(pdir, pg, paper, tag):
|
|
||||||
png = f"{pdir}/page_{pg:03d}.png"
|
|
||||||
raw = json.loads(Path(f"{pdir}/page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
regs = se.dedup_overlapping_regions(raw); regs = se.merge_stacked_title_lines(regs, png)
|
|
||||||
regs = se.drop_masthead_regions(regs, paper, pg, png); regs = se.promote_paragraph_titles(regs, png, paper); regs = se.mark_bullet_titles(regs, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, paper)
|
|
||||||
_p = se.cluster_all_article_blocks(regs, ds, sep_lines=separator_barriers(png, regs))
|
|
||||||
if se.recover_orphan_text_headlines(_p, regs, png): ds = se.find_article_starts_by_dateline(regs, png, paper)
|
|
||||||
bars = separator_barriers(png, regs)
|
|
||||||
blocks = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
walls, (W, H) = big_walls(png)
|
|
||||||
cright = max((r["bbox"][2] for r in regs), default=W)
|
|
||||||
mh = masthead_bottom(png, raw, paper, pg, W, H)
|
|
||||||
top_row_cut = mh + 320 # an article whose top is within this band is "top row"
|
|
||||||
|
|
||||||
def deadends(b):
|
|
||||||
x1, y1, x2, y2 = b["bbox"]; cx = (x1 + x2) / 2; bh = y2 - y1
|
|
||||||
# rightmost dead-end: nearest big wall right of the block centre that spans it; else page edge
|
|
||||||
rcand = [w["x"] for w in walls if w["x"] > cx
|
|
||||||
and max(0, min(y2, w["y2"]) - max(y1, w["y1"])) >= 0.4 * bh]
|
|
||||||
right = min(rcand) if rcand else cright
|
|
||||||
right = max(right, x2) # never shrink
|
|
||||||
# topmost dead-end: top-row article -> up to masthead bottom
|
|
||||||
top = mh if (y1 <= top_row_cut and mh > 0) else y1
|
|
||||||
top = min(top, y1) # never shrink downward
|
|
||||||
return [x1, top, right, y2]
|
|
||||||
|
|
||||||
img = Image.new("RGB", (W, H), "white"); d = ImageDraw.Draw(img)
|
|
||||||
try: font = ImageFont.truetype("DejaVuSans-Bold.ttf", 30)
|
|
||||||
except Exception: font = ImageFont.load_default()
|
|
||||||
if mh > 4:
|
|
||||||
d.rectangle([0, 0, W, mh], fill=(232,232,232)); d.line([0,mh,W,mh], fill=(140,140,140), width=5)
|
|
||||||
d.text((14, max(2, mh//2-16)), "MASTHEAD (top dead-end)", fill=(110,110,110), font=font)
|
|
||||||
for w in walls:
|
|
||||||
d.line([w["x"], w["y1"], w["x"], w["y2"]], fill=(235,70,70), width=8)
|
|
||||||
pal = se._ARTICLE_COLORS
|
|
||||||
for i, b in enumerate(blocks):
|
|
||||||
ox1, oy1, ox2, oy2 = b["bbox"]; nx1, ny1, nx2, ny2 = deadends(b); c = pal[i % len(pal)]
|
|
||||||
d.rectangle([ox1, oy1, ox2, oy2], outline=(180,180,180), width=3) # original (gray)
|
|
||||||
d.rectangle([nx1, ny1, nx2, ny2], outline=c, width=8) # dead-end (color)
|
|
||||||
lab = f"#{b['anchor_id']} [{b['kind']}]"
|
|
||||||
d.rectangle([nx1+5, ny1+6, nx1+16+len(lab)*15, ny1+42], fill=c)
|
|
||||||
d.text((nx1+11, ny1+9), lab, fill="white", font=font)
|
|
||||||
out = f"{pdir}/page_{pg:03d}_partition_debug.png"; img.save(out)
|
|
||||||
print(f"{tag} pg{pg}: {len(blocks)} blocks, {len(walls)} walls, masthead_bottom={int(mh)} -> {out}")
|
|
||||||
|
|
||||||
run("output/NamastheTelangana_Siddipet_20260602_20260604_214937/pages", 2, "namaste_telangana", "NT")
|
|
||||||
run("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages", 1, "andhra_jyothi", "AJ")
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
import sys, types; sys.modules.setdefault("fitz", types.ModuleType("fitz"))
|
|
||||||
import os, tempfile, json
|
|
||||||
tempfile.tempdir = os.path.abspath("_tess_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/Sakshi_Jangaon_District_20260520_20260609_210104")
|
|
||||||
png = str(RUN/"pages/page_001.png")
|
|
||||||
regions = json.loads((RUN/"pages/page_001.regions.json").read_text())["regions"]
|
|
||||||
regions = se.dedup_overlapping_regions(regions)
|
|
||||||
regions = se.merge_stacked_title_lines(regions, png)
|
|
||||||
regions = se.drop_masthead_regions(regions, "sakshi", 1, png)
|
|
||||||
regions = se.promote_paragraph_titles(regions, png, "sakshi")
|
|
||||||
dls = se.find_article_starts_by_dateline(regions, png, "sakshi")
|
|
||||||
seps = separator_barriers(png, regions)
|
|
||||||
blocks = se.cluster_all_article_blocks(regions, dls, sep_lines=seps)
|
|
||||||
rmap = {r['id']:r for r in regions}
|
|
||||||
for b in blocks:
|
|
||||||
if b['anchor_id']==71:
|
|
||||||
print("BLOCK:", {k:v for k,v in b.items() if k!='members'})
|
|
||||||
print("members:")
|
|
||||||
for m in sorted(b['members']+[b['anchor_id']], key=lambda m: rmap[m]['bbox'][1] if m in rmap else 0):
|
|
||||||
r = rmap.get(m)
|
|
||||||
print(" ", m, r['type'] if r else '?', r['bbox'] if r else '?')
|
|
||||||
json.dump({'blocks':[{'anchor':b['anchor_id'],'kind':b['kind'],'bbox':b['bbox'],'members':b['members']} for b in blocks]}, open('/tmp/blocks71.json','w'))
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
import sys, json
|
|
||||||
sys.path.insert(0, "/Users/kranthikumar/Documents/telugu_extractor")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
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")
|
|
||||||
bars = separator_barriers(str(png), regions)
|
|
||||||
blocks = se.cluster_all_article_blocks(regions, dateline_starts=ds, sep_lines=bars)
|
|
||||||
rmap = {r["id"]: r for r in regions}
|
|
||||||
print(f"\n==== PAGE {pg} ====")
|
|
||||||
for b in blocks:
|
|
||||||
anchor = rmap.get(b["anchor_id"])
|
|
||||||
if not anchor:
|
|
||||||
continue
|
|
||||||
atop = anchor["bbox"][1]
|
|
||||||
# members whose ENTIRE box is above the anchor headline top
|
|
||||||
above_mems = [m for m in b["members"]
|
|
||||||
if m != b["anchor_id"] and rmap[m]["bbox"][3] <= atop + 20]
|
|
||||||
if above_mems and b["kind"] == "H":
|
|
||||||
print(f" block H anchor={b['anchor_id']} (top y={atop}) has {len(above_mems)} member(s) ABOVE it:")
|
|
||||||
for m in above_mems:
|
|
||||||
rb = rmap[m]["bbox"]
|
|
||||||
print(f" R{m} {rmap[m]['type']:<14} y[{rb[1]}..{rb[3]}] x[{rb[0]}..{rb[2]}]")
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
import sys, json, contextlib, io
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers, detect_separator_lines
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
png = D / "page_001.png"
|
|
||||||
regs0 = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
regs = se.drop_masthead_regions(regs0, "andhra_jyothi", 1, png)
|
|
||||||
|
|
||||||
res = detect_separator_lines(png)
|
|
||||||
print(f"=== {len(res['h'])} raw horizontal lines ===")
|
|
||||||
for L in sorted(res["h"], key=lambda d: d["y1"]):
|
|
||||||
print(f" H y={L['y1']:>5} x[{L['x1']:>4}..{L['x2']:>4}] len={L['len']:>4} gray={L['gray']}")
|
|
||||||
|
|
||||||
print("\n=== separator_barriers (after filters) ===")
|
|
||||||
bars = separator_barriers(str(png), regs)
|
|
||||||
for L in sorted(bars, key=lambda d: d["y"]):
|
|
||||||
print(f" bar y={L['y']:>5} x[{L['x1']:>4}..{L['x2']:>4}] mc={L.get('mc')}")
|
|
||||||
22
_probe_dl.py
22
_probe_dl.py
|
|
@ -1,22 +0,0 @@
|
||||||
import sys, json, contextlib, io
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers, detect_separator_lines
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
png = D / "page_001.png"
|
|
||||||
regs0 = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
regs = se.drop_masthead_regions(regs0, "andhra_jyothi", 1, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, str(png), "andhra_jyothi")
|
|
||||||
|
|
||||||
print(f"=== {len(ds)} dateline starts ===")
|
|
||||||
for s in sorted(ds, key=lambda s: s["bbox"][1]):
|
|
||||||
print(f" DL region={s['region_id']:>3} bbox={s['bbox']} headline={s.get('headline_region')}")
|
|
||||||
|
|
||||||
byid = {r["id"]: r for r in regs}
|
|
||||||
print("\n=== all regions sorted by y ===")
|
|
||||||
for r in sorted(regs, key=lambda r: (r["bbox"][1], r["bbox"][0])):
|
|
||||||
b = r["bbox"]
|
|
||||||
print(f" R{r['id']:>3} {r['type']:<16} bbox={b}")
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
import sys, json, contextlib, io
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers, detect_separator_lines
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
png = D / "page_001.png"
|
|
||||||
regs0 = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
regs = se.drop_masthead_regions(regs0, "andhra_jyothi", 1, png)
|
|
||||||
|
|
||||||
byid = {r["id"]: r for r in regs}
|
|
||||||
# focus region 35 and 55
|
|
||||||
for rid in (35, 55):
|
|
||||||
if rid in byid:
|
|
||||||
r = byid[rid]
|
|
||||||
print(f"R{rid} type={r['type']} bbox={r['bbox']}")
|
|
||||||
else:
|
|
||||||
print(f"R{rid} NOT in regs (dropped?)")
|
|
||||||
|
|
||||||
print("\n-- all regions near x 150..750, y 1100..1600 --")
|
|
||||||
for r in sorted(regs, key=lambda r: r["bbox"][1]):
|
|
||||||
b = r["bbox"]
|
|
||||||
if b[1] < 1700 and b[3] > 1050 and b[0] < 760:
|
|
||||||
print(f" R{r['id']:>3} {r['type']:<16} bbox={b}")
|
|
||||||
|
|
||||||
print("\n-- raw horizontal lines near y=1375 --")
|
|
||||||
res = detect_separator_lines(png)
|
|
||||||
for L in sorted(res["h"], key=lambda d: d["y1"]):
|
|
||||||
if 1300 < L["y1"] < 1450:
|
|
||||||
print(f" H y={L['y1']} x[{L['x1']}..{L['x2']}] len={L['len']} gray={L['gray']}")
|
|
||||||
|
|
||||||
print("\n-- separator_barriers near y=1375 --")
|
|
||||||
bars = separator_barriers(str(png), regs)
|
|
||||||
for L in sorted(bars, key=lambda d: d["y"]):
|
|
||||||
if 1300 < L["y"] < 1450:
|
|
||||||
print(f" bar y={L['y']} x[{L['x1']}..{L['x2']}] mc={L.get('mc')}")
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
import sys, json, contextlib, io
|
|
||||||
sys.path.insert(0, ".")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
png = D / "page_001.png"
|
|
||||||
regs0 = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
regs = se.drop_masthead_regions(regs0, "andhra_jyothi", 1, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, str(png), "andhra_jyothi")
|
|
||||||
bars = separator_barriers(str(png), regs)
|
|
||||||
bl = se.cluster_all_article_blocks(regs, dateline_starts=ds, sep_lines=bars)
|
|
||||||
|
|
||||||
print("bars near y=1375:", [b for b in bars if 1300 < b["y"] < 1450])
|
|
||||||
print()
|
|
||||||
dl_ids = {s["region_id"] for s in ds}
|
|
||||||
for b in sorted(bl, key=lambda b: (b["bbox"][1], b["bbox"][0])):
|
|
||||||
kind = b["kind"]
|
|
||||||
print(f" {kind} anchor={b['anchor_id']:>3} bbox={b['bbox']} members={sorted(b['members'])}")
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
import os, tempfile, contextlib, io, json
|
|
||||||
tempfile.tempdir = os.path.abspath("_tess_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
|
|
||||||
se._ACTIVE_PAPER = "sakshi"
|
|
||||||
RUN = Path("output/Sakshi_Jangaon_District_20260520_20260609_210104"); D = RUN / "pages"
|
|
||||||
png = str(D / "page_001.png")
|
|
||||||
regs = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
buf = io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs = se.dedup_overlapping_regions(regs); regs = se.merge_stacked_title_lines(regs, png)
|
|
||||||
regs = se.drop_masthead_regions(regs, "sakshi", 1, png)
|
|
||||||
regs = se.drop_classifieds_regions(regs, png); regs = se.tag_legal_notices(regs, png)
|
|
||||||
regs = se.promote_paragraph_titles(regs, png, "sakshi")
|
|
||||||
regs = se.detect_sakshi_headline_bands(regs, png)
|
|
||||||
regs = se.mark_bullet_titles(regs, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, "sakshi")
|
|
||||||
bars = separator_barriers(png, regs)
|
|
||||||
_p = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_p, regs, png):
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, "sakshi")
|
|
||||||
blocks = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
WATCH = [44, 16, 36, 69, 61, 46, 23, 4, 74, 49, 17, 88, 33, 28, 3, 53, 56]
|
|
||||||
own = {}
|
|
||||||
for b in blocks:
|
|
||||||
for m in set(b["members"]) | {b["anchor_id"]}:
|
|
||||||
own.setdefault(m, []).append(f"{b['kind']}{b['anchor_id']}")
|
|
||||||
print("region owners:")
|
|
||||||
for w in WATCH:
|
|
||||||
print(f" R{w:>3} -> {own.get(w, ['(NONE)'])}")
|
|
||||||
print("\nhorizontal bars near lift-1 (y3300-4100) and R50 zone (y4350-4900):")
|
|
||||||
for L in bars:
|
|
||||||
if not L.get("vert") and "y" in L and (3300 <= L["y"] <= 4100 or 4350 <= L["y"] <= 4900):
|
|
||||||
print(f" y={L['y']} x={L['x1']}-{L['x2']} w={L['x2']-L['x1']}")
|
|
||||||
print("\ndateline regions:", sorted(s["region_id"] for s in ds))
|
|
||||||
print("\npipeline lines mentioning watched regions / passes:")
|
|
||||||
for l in buf.getvalue().splitlines():
|
|
||||||
if any(k in l for k in ("R44", "R69", "R61", "R46", "R23", "rebind", "Sakshi", "Orphan photo", "Masthead", "📐")):
|
|
||||||
print(" ", l.strip())
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
import os, tempfile, contextlib, io, json
|
|
||||||
tempfile.tempdir = os.path.abspath("_tess_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
|
|
||||||
se._ACTIVE_PAPER = "sakshi"
|
|
||||||
RUN = Path("output/Sakshi_Jangaon_District_20260520_20260609_210104"); D = RUN / "pages"
|
|
||||||
png = str(D / "page_002.png")
|
|
||||||
regs = json.loads((D / "page_002.regions.json").read_text())["regions"]
|
|
||||||
buf = io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs = se.dedup_overlapping_regions(regs); regs = se.merge_stacked_title_lines(regs, png)
|
|
||||||
regs = se.drop_masthead_regions(regs, "sakshi", 2, png)
|
|
||||||
regs = se.drop_classifieds_regions(regs, png); regs = se.tag_legal_notices(regs, png)
|
|
||||||
regs = se.promote_paragraph_titles(regs, png, "sakshi")
|
|
||||||
regs = se.detect_sakshi_headline_bands(regs, png)
|
|
||||||
regs = se.mark_bullet_titles(regs, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, "sakshi")
|
|
||||||
bars = separator_barriers(png, regs)
|
|
||||||
_p = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_p, regs, png):
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, "sakshi")
|
|
||||||
blocks = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
rm = {r["id"]: r for r in regs}
|
|
||||||
print("BLOCKS:")
|
|
||||||
for b in sorted(blocks, key=lambda b: (b["bbox"][1], b["bbox"][0])):
|
|
||||||
x1, y1, x2, y2 = b["bbox"]
|
|
||||||
f = " FURN" if b.get("_furniture") else ""
|
|
||||||
print(f" {b['kind']}{b['anchor_id']:<4} [{x1},{y1},{x2},{y2}] mem={sorted(set(b['members']))}{f}")
|
|
||||||
WATCH = [20, 29, 34, 51, 3, 14, 31, 65, 87, 105, 121, 76, 8, 10, 36, 46, 81]
|
|
||||||
own = {}
|
|
||||||
for b in blocks:
|
|
||||||
tag = ("F" if b.get("_furniture") else b["kind"]) + str(b["anchor_id"])
|
|
||||||
for m in set(b["members"]) | {b["anchor_id"]}:
|
|
||||||
own.setdefault(m, []).append(tag)
|
|
||||||
print("\nWATCH owners:", {f"R{w}": own.get(w, "NONE") for w in WATCH})
|
|
||||||
print("\nbars y2380-2820 / y3400-3700 / y4640-4760:")
|
|
||||||
for L in bars:
|
|
||||||
if not L.get("vert") and "y" in L and (2380 <= L["y"] <= 2820 or 3400 <= L["y"] <= 3700 or 4640 <= L["y"] <= 4760):
|
|
||||||
print(f" y={L['y']} x={L['x1']}-{L['x2']} w={L['x2']-L['x1']}")
|
|
||||||
print("\ndatelines:", sorted(s["region_id"] for s in ds))
|
|
||||||
print("\npipeline lines:")
|
|
||||||
for l in buf.getvalue().splitlines():
|
|
||||||
if any(k in l for k in ("Type-2", "rule-split", "📐", "Masthead", "⇤", "re-home", "📸", "Orphan photo", "carve", "furniture")):
|
|
||||||
print(" ", l.strip())
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
R121 bbox=[2113, 2214, 3502, 3634] kind=H raw=True
|
|
||||||
R12 text y[1996,2719] x[2979,3480] DATELINE
|
|
||||||
R39 image y[2214,2622] x[2113,2939]
|
|
||||||
R111 figure_title y[2628,2725] x[2196,2856]
|
|
||||||
R121 doc_title y[2799,2898] x[2422,3493]
|
|
||||||
R59 image y[2902,3115] x[2981,3502]
|
|
||||||
R21 text y[2907,3621] x[2419,2945] DATELINE
|
|
||||||
R116 figure_title y[3123,3163] x[3113,3376]
|
|
||||||
R14 text y[3195,3622] x[2977,3502]
|
|
||||||
20
_r65.txt
20
_r65.txt
|
|
@ -1,20 +0,0 @@
|
||||||
page WxH=4200x6422; 12 blocks
|
|
||||||
|
|
||||||
R65 bbox=[113, 1958, 1977, 6279] kind=H raw=True locked=False #members=36
|
|
||||||
R65 datelines: [43, 47, 26, 21]
|
|
||||||
vertical walls: [(616, 4683, 6292), (141, 4683, 6292), (123, 4123, 6309), (637, 4122, 6309), (2015, 1949, 5689), (3300, 1929, 6308), (2669, 404, 1905)]
|
|
||||||
wide H-seps (>0.5W): [(1936, 114, 4091), (5709, 686, 3276)]
|
|
||||||
|
|
||||||
all block anchors+bbox:
|
|
||||||
R109 H bbox=[119, 393, 612, 1899] ndl=1
|
|
||||||
R79 H bbox=[2693, 405, 4087, 1833] ndl=1
|
|
||||||
R55 H bbox=[679, 415, 2630, 1919] ndl=1
|
|
||||||
R77 H bbox=[2692, 1594, 4087, 1903] ndl=1
|
|
||||||
R14 DL bbox=[2045, 1950, 3265, 3097] ndl=1
|
|
||||||
R65 H bbox=[113, 1958, 1977, 6279] ndl=4
|
|
||||||
R96 H bbox=[3326, 1964, 4087, 3638] ndl=1
|
|
||||||
R64 H bbox=[2046, 3116, 3264, 4832] ndl=2
|
|
||||||
R97 H bbox=[3322, 3756, 4087, 5831] ndl=1
|
|
||||||
R110 H bbox=[2044, 4858, 3265, 5685] ndl=1
|
|
||||||
R59 H bbox=[680, 5731, 3267, 6318] ndl=1
|
|
||||||
R7 DL bbox=[3308, 5839, 4087, 6305] ndl=1
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
import os, tempfile, contextlib, io, json, shutil
|
|
||||||
tempfile.tempdir = os.path.abspath("_tess_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
|
|
||||||
se._ACTIVE_PAPER = "namaste_telangana"
|
|
||||||
RUN = Path(os.environ.get("NTA_RUN", "output/NamastheTelangana_Adilabad_20260528_20260610_160056"))
|
|
||||||
D = RUN / "pages"; P = "namaste_telangana"
|
|
||||||
OUT = RUN / "all_article_crops_review"
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
pages = sorted(int(p.stem.split("_")[1]) for p in D.glob("page_*.png"))
|
|
||||||
for pg in pages:
|
|
||||||
png = str(D / f"page_{pg:03d}.png")
|
|
||||||
regs = json.loads((D / f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
buf = io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs = se.dedup_overlapping_regions(regs); regs = se.merge_stacked_title_lines(regs, png)
|
|
||||||
regs = se.drop_masthead_regions(regs, P, pg, png); regs = se.drop_classifieds_regions(regs, png)
|
|
||||||
regs = se.tag_legal_notices(regs, png); regs = se.promote_paragraph_titles(regs, png, P)
|
|
||||||
if pg == 1: regs = se.detect_sakshi_headline_bands(regs, png) # NT: front-page only
|
|
||||||
regs = se.mark_bullet_titles(regs, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, P)
|
|
||||||
bars = separator_barriers(png, regs)
|
|
||||||
_p = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_p, regs, png):
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, P)
|
|
||||||
blocks = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
n = se.crop_all_article_blocks(png, regs, str(OUT), pg, dateline_starts=ds,
|
|
||||||
sep_lines=bars, overlay=True)
|
|
||||||
print(f"=== page {pg}: {n} crops, {len(ds)} datelines ===")
|
|
||||||
for b in sorted(blocks, key=lambda b: (b["bbox"][1], b["bbox"][0])):
|
|
||||||
x1, y1, x2, y2 = b["bbox"]
|
|
||||||
f = " FURN" if b.get("_furniture") else ""
|
|
||||||
print(f" {b['kind']}{b['anchor_id']:<4} [{x1},{y1},{x2},{y2}] {x2-x1}x{y2-y1} mem={len(b['members'])}{f}")
|
|
||||||
for l in sorted({l.strip() for l in buf.getvalue().splitlines()
|
|
||||||
if "rule-split" in l or "Masthead" in l or "Orphan photo" in l}):
|
|
||||||
print(" ", l)
|
|
||||||
print("DONE ->", OUT)
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
import os,tempfile,contextlib,io,json,shutil
|
|
||||||
tempfile.tempdir=os.path.abspath("_tess_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"); D=RUN/"pages"
|
|
||||||
OUT=RUN/"all_article_crops_final"; PAPER="andhra_jyothi"
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
for pg in (1,2,3,4):
|
|
||||||
png=str(D/f"page_{pg:03d}.png")
|
|
||||||
regs=json.loads((D/f"page_{pg:03d}.regions.json").read_text())["regions"] # 0.5 saved
|
|
||||||
buf=io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs=se.dedup_overlapping_regions(regs)
|
|
||||||
regs=se.merge_stacked_title_lines(regs,png)
|
|
||||||
regs=se.drop_masthead_regions(regs,PAPER,pg,png)
|
|
||||||
regs=se.drop_classifieds_regions(regs,png)
|
|
||||||
regs=se.tag_legal_notices(regs,png)
|
|
||||||
regs=se.promote_paragraph_titles(regs,png,PAPER)
|
|
||||||
regs=se.mark_bullet_titles(regs,png)
|
|
||||||
bars=separator_barriers(png,regs)
|
|
||||||
ds=se.find_article_starts_by_dateline(regs,png,PAPER)
|
|
||||||
_probe=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_probe,regs,png): ds=se.find_article_starts_by_dateline(regs,png,PAPER)
|
|
||||||
blocks=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
se.draw_boundary_map_debug(png,regs,D,pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
n=se.crop_all_article_blocks(png,regs,str(OUT),pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
log=buf.getvalue()
|
|
||||||
tags={k:sum(1 for l in log.splitlines() if k in l) for k in
|
|
||||||
["bullet titles flagged","Headline-strip","Floor-trim","Block dateline split",
|
|
||||||
"Multi-column body","orphan overlap"]}
|
|
||||||
tags={k:v//2 if k in ("Headline-strip","Floor-trim","Multi-column body","Block dateline split","orphan overlap") else v for k,v in tags.items()}
|
|
||||||
print(f"page {pg}: {n} crops, {len(ds)} datelines | "+", ".join(f"{k}:{v}" for k,v in tags.items() if v))
|
|
||||||
print("DONE ->",OUT)
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
"""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}")
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
import sys, json, shutil, os
|
|
||||||
sys.path.insert(0, "/Users/kranthikumar/Documents/telugu_extractor")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
png = D / "page_001.png"
|
|
||||||
regions = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
regions2 = se.drop_masthead_regions(regions, "andhra_jyothi", 1, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regions2, str(png), "andhra_jyothi")
|
|
||||||
bars = separator_barriers(str(png), regions2)
|
|
||||||
blocks = se.cluster_all_article_blocks(regions2, dateline_starts=ds, sep_lines=bars)
|
|
||||||
|
|
||||||
dl_ids = {s["region_id"] for s in ds}
|
|
||||||
dl_anchors = {b["anchor_id"] for b in blocks if any(m in dl_ids for m in b["members"])}
|
|
||||||
print(f"{len(ds)} datelines -> {len(dl_anchors)} dateline blocks: {sorted(dl_anchors)}")
|
|
||||||
for b in sorted(blocks, key=lambda d: (d["bbox"][1], d["bbox"][0])):
|
|
||||||
if b["anchor_id"] in dl_anchors:
|
|
||||||
print(f" {b['kind']} anchor={b['anchor_id']:>3} bbox={b['bbox']} members={sorted(b['members'])}")
|
|
||||||
|
|
||||||
out = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/dateline_crops")
|
|
||||||
if out.exists():
|
|
||||||
shutil.rmtree(out)
|
|
||||||
out.mkdir(parents=True)
|
|
||||||
n = se.crop_all_article_blocks(str(png), regions2, str(out), 1,
|
|
||||||
dateline_starts=ds, sep_lines=bars,
|
|
||||||
only_anchor_ids=dl_anchors)
|
|
||||||
print(f"\ndateline crops written: {n}")
|
|
||||||
for f in sorted(os.listdir(out / "page_001")):
|
|
||||||
print(" ", f)
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
import os,tempfile,contextlib,io,json,shutil
|
|
||||||
tempfile.tempdir=os.path.abspath("_tess_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"); D=RUN/"pages"
|
|
||||||
OUT=RUN/"all_article_crops_hstrip"; PAPER="andhra_jyothi"
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
for pg in (1,2,3,4):
|
|
||||||
png=str(D/f"page_{pg:03d}.png")
|
|
||||||
regs=json.loads((D/f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
buf=io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs=se.dedup_overlapping_regions(regs); regs=se.merge_stacked_title_lines(regs,png)
|
|
||||||
regs=se.drop_masthead_regions(regs,PAPER,pg,png); regs=se.promote_paragraph_titles(regs,png,PAPER)
|
|
||||||
bars=separator_barriers(png,regs)
|
|
||||||
ds=se.find_article_starts_by_dateline(regs,png,PAPER)
|
|
||||||
blocks=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
n=se.crop_all_article_blocks(png,regs,str(OUT),pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
ext=[l for l in buf.getvalue().splitlines() if "Headline-strip" in l]
|
|
||||||
print(f"page {pg}: {n} crops | {len(ext)} headline-strip extension(s)")
|
|
||||||
for l in ext: print(" ",l.strip())
|
|
||||||
print("DONE")
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
import os,tempfile,contextlib,io,json,shutil
|
|
||||||
tempfile.tempdir=os.path.abspath("_tess_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
|
|
||||||
se._ACTIVE_PAPER = "namaste_telangana" # gates paper-specific clustering passes (pipeline sets this too)
|
|
||||||
RUN=Path(os.environ.get("JG_RUN","output/NamastheTelangana_Jangaon_20260520_20260609_130635")); D=RUN/"pages"
|
|
||||||
OUT=RUN/"all_article_crops_review"; P="namaste_telangana"
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
for pg in (1,2):
|
|
||||||
png=str(D/f"page_{pg:03d}.png")
|
|
||||||
regs=json.loads((D/f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
buf=io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs=se.dedup_overlapping_regions(regs); regs=se.merge_stacked_title_lines(regs,png)
|
|
||||||
regs=se.drop_masthead_regions(regs,P,pg,png); regs=se.drop_classifieds_regions(regs,png); regs=se.tag_legal_notices(regs,png); regs=se.promote_paragraph_titles(regs,png,P)
|
|
||||||
if pg==1: regs=se.detect_sakshi_headline_bands(regs,png) # NT: front-page display headlines only
|
|
||||||
regs=se.mark_bullet_titles(regs,png)
|
|
||||||
ds=se.find_article_starts_by_dateline(regs,png,P)
|
|
||||||
bars=separator_barriers(png,regs)
|
|
||||||
_probe=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_probe,regs,png): ds=se.find_article_starts_by_dateline(regs,png,P)
|
|
||||||
blocks=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
se.draw_boundary_map_debug(png,regs,D,pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
n=se.crop_all_article_blocks(png,regs,str(OUT),pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
log=buf.getvalue()
|
|
||||||
rm={r['id']:r for r in regs}; dlids={s['region_id'] for s in ds}
|
|
||||||
print(f"\n=== page {pg}: {n} crops, {len(ds)} datelines ===")
|
|
||||||
for b in sorted(blocks,key=lambda b:(b['bbox'][1],b['bbox'][0])):
|
|
||||||
x1,y1,x2,y2=b['bbox']; w,h=x2-x1,y2-y1
|
|
||||||
ndl=sum(1 for m in b['members'] if m in dlids)
|
|
||||||
types={}
|
|
||||||
for m in b['members']:
|
|
||||||
t=rm.get(m,{}).get('type','?'); types[t]=types.get(t,0)+1
|
|
||||||
ntext=types.get('text',0); nimg=types.get('image',0)
|
|
||||||
flags=[]
|
|
||||||
if ndl>=2: flags.append(f"{ndl}DL(roundup?)")
|
|
||||||
if ntext==0 and nimg>0: flags.append("IMG-ONLY(no text)")
|
|
||||||
if len(b['members'])==1: flags.append("SINGLE-region")
|
|
||||||
if b['kind']=='O': flags.append("ORPHAN")
|
|
||||||
print(f" R{b['anchor_id']:>3} {b['kind']} {'RAW' if b.get('_raw_rect') else ' '} "
|
|
||||||
f"bbox=[{x1},{y1},{x2},{y2}] {w}x{h} mem={len(b['members'])} {types} "
|
|
||||||
f"{' '.join(flags)}")
|
|
||||||
for key in ("Section banner","Containment-merge","Headline-merge","Banner rectangle"):
|
|
||||||
c=[l.strip() for l in log.splitlines() if key in l]
|
|
||||||
if c: print(f" [{key}] x{len(c)//2 if key in ('Headline-merge','Containment-merge','Section banner','Banner rectangle') else len(c)}")
|
|
||||||
print("\nDONE ->",OUT)
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
import os,tempfile,contextlib,io,json,shutil
|
|
||||||
tempfile.tempdir=os.path.abspath("_tess_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
|
|
||||||
se._ACTIVE_PAPER = "namaste_telangana" # gates paper-specific clustering passes (pipeline sets this too)
|
|
||||||
RUN=Path("output/NamastheTelangana_Siddipet_20260602_20260604_214937"); D=RUN/"pages"
|
|
||||||
OUT=RUN/"all_article_crops_final"; P="namaste_telangana"
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
for pg in (1,2,3,4):
|
|
||||||
png=str(D/f"page_{pg:03d}.png")
|
|
||||||
regs=json.loads((D/f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
buf=io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs=se.dedup_overlapping_regions(regs); regs=se.merge_stacked_title_lines(regs,png)
|
|
||||||
regs=se.drop_masthead_regions(regs,P,pg,png); regs=se.drop_classifieds_regions(regs,png); regs=se.tag_legal_notices(regs,png); regs=se.promote_paragraph_titles(regs,png,P)
|
|
||||||
if pg==1: regs=se.detect_sakshi_headline_bands(regs,png) # NT: front-page display headlines only
|
|
||||||
regs=se.mark_bullet_titles(regs,png)
|
|
||||||
ds=se.find_article_starts_by_dateline(regs,png,P)
|
|
||||||
bars=separator_barriers(png,regs)
|
|
||||||
_probe=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_probe,regs,png): ds=se.find_article_starts_by_dateline(regs,png,P)
|
|
||||||
blocks=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
se.draw_boundary_map_debug(png,regs,D,pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
n=se.crop_all_article_blocks(png,regs,str(OUT),pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
log=buf.getvalue()
|
|
||||||
tags={k:sum(1 for l in log.splitlines() if k in l) for k in
|
|
||||||
["Caption bound","Caption orphan dropped","bullet titles flagged","Headline-strip",
|
|
||||||
"Floor-trim","Block dateline split","Multi-column body","orphan overlap"]}
|
|
||||||
tags={k:(v//2 if k in ("Headline-strip","Floor-trim","Multi-column body","Block dateline split","orphan overlap") else v) for k,v in tags.items()}
|
|
||||||
over=[b['anchor_id'] for b in blocks if len([m for m in b['members'] if m in {s['region_id'] for s in ds}])>=2]
|
|
||||||
print(f"page {pg}: {n} crops, {len(ds)} datelines, 2+dl-blocks={over or 'none'} | "+", ".join(f"{k}:{v}" for k,v in tags.items() if v))
|
|
||||||
print("DONE ->",OUT)
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
import sys, json
|
|
||||||
sys.path.insert(0, "/Users/kranthikumar/Documents/telugu_extractor")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
png = D / "page_001.png"
|
|
||||||
regions = json.loads((D / "page_001.regions.json").read_text())["regions"]
|
|
||||||
print(f"raw regions: {len(regions)}")
|
|
||||||
|
|
||||||
# 1) masthead drop
|
|
||||||
regions2 = se.drop_masthead_regions(regions, "andhra_jyothi", 1, png)
|
|
||||||
dropped = {r['id'] for r in regions} - {r['id'] for r in regions2}
|
|
||||||
print(f"masthead dropped ids: {sorted(dropped)} -> {len(regions2)} regions")
|
|
||||||
|
|
||||||
# 2) dateline starts
|
|
||||||
ds = se.find_article_starts_by_dateline(regions2, str(png), "andhra_jyothi")
|
|
||||||
print(f"dateline starts: {len(ds)}")
|
|
||||||
for s in ds:
|
|
||||||
print(f" DL region_id={s['region_id']} headline_id={s.get('headline_id')} bbox={s['bbox']}")
|
|
||||||
|
|
||||||
# 3) separator barriers
|
|
||||||
bars = separator_barriers(str(png), regions2)
|
|
||||||
print(f"separator barriers: {len(bars)}")
|
|
||||||
|
|
||||||
# 4) cluster
|
|
||||||
blocks = se.cluster_all_article_blocks(regions2, dateline_starts=ds, sep_lines=bars)
|
|
||||||
print(f"\nblocks: {len(blocks)}")
|
|
||||||
dl_ids = {s['region_id'] for s in ds}
|
|
||||||
for b in sorted(blocks, key=lambda d: (d['bbox'][1], d['bbox'][0])):
|
|
||||||
mem = b['members']
|
|
||||||
has_dl = any(m in dl_ids for m in mem)
|
|
||||||
print(f" block anchor={b['anchor_id']} kind={b['kind']} dl={has_dl} bbox={b['bbox']} members={sorted(mem)}")
|
|
||||||
|
|
||||||
# 5) render crops to /tmp for visual check
|
|
||||||
import shutil
|
|
||||||
out = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/all_article_crops_test")
|
|
||||||
if out.exists():
|
|
||||||
shutil.rmtree(out)
|
|
||||||
out.mkdir(parents=True)
|
|
||||||
n = se.crop_all_article_blocks(str(png), regions2, str(out), 1,
|
|
||||||
dateline_starts=ds, sep_lines=bars)
|
|
||||||
print(f"\ncrops written: {n} -> {out}/page_001")
|
|
||||||
import os
|
|
||||||
for f in sorted(os.listdir(out / "page_001")):
|
|
||||||
print(" ", f)
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
import sys, json
|
|
||||||
sys.path.insert(0, "/Users/kranthikumar/Documents/telugu_extractor")
|
|
||||||
from pathlib import Path
|
|
||||||
import smart_extractor as se
|
|
||||||
from _lines import separator_barriers
|
|
||||||
|
|
||||||
D = Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919/pages")
|
|
||||||
for pg in (2, 3):
|
|
||||||
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")
|
|
||||||
bars = separator_barriers(str(png), regions)
|
|
||||||
blocks = se.cluster_all_article_blocks(regions, dateline_starts=ds, sep_lines=bars)
|
|
||||||
dl_ids = {s['region_id'] for s in ds}
|
|
||||||
print(f"\n==== PAGE {pg} datelines={len(ds)} bars={len(bars)} blocks={len(blocks)} ====")
|
|
||||||
# each dateline must sit in a block that ALSO has a headline/title anchor
|
|
||||||
for s in ds:
|
|
||||||
rid = s['region_id']
|
|
||||||
owner = None
|
|
||||||
for b in blocks:
|
|
||||||
if rid in b['members'] or rid == b['anchor_id']:
|
|
||||||
owner = b; break
|
|
||||||
kind = owner['kind'] if owner else '??'
|
|
||||||
ndl = sum(1 for m in owner['members'] if m in dl_ids) if owner else 0
|
|
||||||
flag = ''
|
|
||||||
if owner is None:
|
|
||||||
flag = 'LOST'
|
|
||||||
elif kind == 'DL':
|
|
||||||
flag = 'headless(DL)'
|
|
||||||
elif ndl > 1:
|
|
||||||
flag = f'MERGED({ndl} datelines)'
|
|
||||||
print(f" DL R{rid} -> block anchor={owner['anchor_id'] if owner else None} kind={kind} {flag}")
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
import os, tempfile, contextlib, io, json, sys, shutil
|
|
||||||
tempfile.tempdir = os.path.abspath("_tess_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
|
|
||||||
|
|
||||||
# Replays the POLITICAL crop step (no API): saved political_result.json member ids
|
|
||||||
# + freshly recomputed region prep chain -> crop_political_articles (block-snap).
|
|
||||||
RUNS = [
|
|
||||||
("sakshi", Path("output/Sakshi_Jangaon_District_20260520_20260609_210104"), [1]),
|
|
||||||
("andhra_jyothi", Path("output/AndhraJyothi_Siddipet District_20260602_20260603_144919"), [2, 3, 4]),
|
|
||||||
("namaste_telangana", Path("output/NamastheTelangana_Jangaon_20260520_20260608_124720"), [1]),
|
|
||||||
]
|
|
||||||
for paper, RUN, pages in RUNS:
|
|
||||||
se._ACTIVE_PAPER = paper
|
|
||||||
D = RUN / "pages"
|
|
||||||
OUT = RUN / "articles_review"
|
|
||||||
if OUT.exists():
|
|
||||||
shutil.rmtree(OUT)
|
|
||||||
for pg in pages:
|
|
||||||
png = str(D / f"page_{pg:03d}.png")
|
|
||||||
prf = D / f"page_{pg:03d}.political_result.json"
|
|
||||||
if not prf.exists() or not os.path.exists(png):
|
|
||||||
continue
|
|
||||||
political = json.load(open(prf)).get("political_articles", [])
|
|
||||||
if not political:
|
|
||||||
continue
|
|
||||||
regs = json.loads((D / f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
buf = io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs = se.dedup_overlapping_regions(regs)
|
|
||||||
regs = se.merge_stacked_title_lines(regs, png)
|
|
||||||
regs = se.drop_masthead_regions(regs, paper, pg, png)
|
|
||||||
regs = se.drop_classifieds_regions(regs, png)
|
|
||||||
regs = se.tag_legal_notices(regs, png)
|
|
||||||
regs = se.promote_paragraph_titles(regs, png, paper)
|
|
||||||
if paper == "sakshi":
|
|
||||||
regs = se.detect_sakshi_headline_bands(regs, png)
|
|
||||||
regs = se.mark_bullet_titles(regs, png)
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, paper)
|
|
||||||
bars = separator_barriers(png, regs)
|
|
||||||
_p = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_p, regs, png):
|
|
||||||
ds = se.find_article_starts_by_dateline(regs, png, paper)
|
|
||||||
recs = se.crop_political_articles(png, political, regs, OUT, pg,
|
|
||||||
dateline_starts=ds, sep_lines=bars)
|
|
||||||
print(f"=== {RUN.name} page {pg}: {len(political)} political -> {len(recs)} crops")
|
|
||||||
for l in buf.getvalue().splitlines():
|
|
||||||
if any(k in l for k in ("Block-snap", "Cropped:", "Clipped", "Floored", "Grew",
|
|
||||||
"Banner", "block-snap unavailable")):
|
|
||||||
print(" ", l.strip())
|
|
||||||
print("DONE")
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
import os,tempfile,contextlib,io,json,shutil
|
|
||||||
tempfile.tempdir=os.path.abspath("_tess_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"); D=RUN/"pages"
|
|
||||||
OUT=RUN/"all_article_crops_rescue"; PAPER="andhra_jyothi"
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
for pg in (1,2,3,4):
|
|
||||||
png=str(D/f"page_{pg:03d}.png")
|
|
||||||
regs=json.loads((D/f"page_{pg:03d}.regions.json").read_text())["regions"] # 0.5 saved
|
|
||||||
buf=io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs=se.dedup_overlapping_regions(regs); regs=se.merge_stacked_title_lines(regs,png)
|
|
||||||
regs=se.drop_masthead_regions(regs,PAPER,pg,png); regs=se.promote_paragraph_titles(regs,png,PAPER)
|
|
||||||
bars=separator_barriers(png,regs)
|
|
||||||
regs=se.rescue_headlines_above_photos(regs,png,PAPER,bars) # NEW
|
|
||||||
ds=se.find_article_starts_by_dateline(regs,png,PAPER)
|
|
||||||
blocks=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
n=se.crop_all_article_blocks(png,regs,str(OUT),pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
resc=[l for l in buf.getvalue().splitlines() if "HEADLINE RESCUE" in l]
|
|
||||||
print(f"page {pg}: {n} crops | {len(resc)} headline(s) rescued")
|
|
||||||
for l in resc: print(" ",l.strip())
|
|
||||||
print("DONE")
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
import os,tempfile,contextlib,io,json,shutil
|
|
||||||
tempfile.tempdir=os.path.abspath("_tess_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
|
|
||||||
se._ACTIVE_PAPER = "sakshi" # gate Sakshi-specific clustering passes
|
|
||||||
RUN=Path(os.environ.get("SAK_RUN","output/Sakshi_Jangaon_District_20260520_20260609_210104")); D=RUN/"pages"
|
|
||||||
OUT=RUN/"all_article_crops_review"; P="sakshi"
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
for pg in (1,2):
|
|
||||||
png=str(D/f"page_{pg:03d}.png")
|
|
||||||
regs=json.loads((D/f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
buf=io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs=se.dedup_overlapping_regions(regs); regs=se.merge_stacked_title_lines(regs,png)
|
|
||||||
regs=se.drop_masthead_regions(regs,P,pg,png); regs=se.drop_classifieds_regions(regs,png); regs=se.tag_legal_notices(regs,png); regs=se.promote_paragraph_titles(regs,png,P)
|
|
||||||
regs=se.detect_sakshi_headline_bands(regs,png)
|
|
||||||
regs=se.mark_bullet_titles(regs,png)
|
|
||||||
ds=se.find_article_starts_by_dateline(regs,png,P)
|
|
||||||
bars=separator_barriers(png,regs)
|
|
||||||
_probe=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
if se.recover_orphan_text_headlines(_probe,regs,png): ds=se.find_article_starts_by_dateline(regs,png,P)
|
|
||||||
blocks=se.cluster_all_article_blocks(regs,ds,sep_lines=bars)
|
|
||||||
se.draw_boundary_map_debug(png,regs,D,pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
n=se.crop_all_article_blocks(png,regs,str(OUT),pg,dateline_starts=ds,sep_lines=bars,overlay=True)
|
|
||||||
log=buf.getvalue()
|
|
||||||
rm={r['id']:r for r in regs}; dlids={s['region_id'] for s in ds}
|
|
||||||
print(f"\n=== page {pg}: {n} crops, {len(ds)} datelines ===")
|
|
||||||
img_orphans=[]
|
|
||||||
for b in sorted(blocks,key=lambda b:(b['bbox'][1],b['bbox'][0])):
|
|
||||||
x1,y1,x2,y2=b['bbox']; w,h=x2-x1,y2-y1
|
|
||||||
types={}
|
|
||||||
for m in b['members']:
|
|
||||||
t=rm.get(m,{}).get('type','?'); types[t]=types.get(t,0)+1
|
|
||||||
ntext=types.get('text',0); nimg=types.get('image',0)
|
|
||||||
is_art=any(rm.get(m,{}).get('type') in ('doc_title','paragraph_title') for m in b['members']) or any(m in dlids for m in b['members'])
|
|
||||||
flags=[]
|
|
||||||
if nimg>0 and not is_art: flags.append("IMG-ORPHAN?")
|
|
||||||
if b['kind']=='O': flags.append("ORPHAN")
|
|
||||||
if nimg>0 and not is_art and ntext==0: img_orphans.append(b['anchor_id'])
|
|
||||||
print(f" R{b['anchor_id']:>3} {b['kind']} bbox=[{x1},{y1},{x2},{y2}] {w}x{h} mem={len(b['members'])} {types} {' '.join(flags)}")
|
|
||||||
binds=sorted({l.strip() for l in log.splitlines()
|
|
||||||
if "Orphan photo" in l or "Masthead" in l or "📐" in l or "rule-split" in l})
|
|
||||||
print(f" >>> image-only orphans REMAINING: {img_orphans}")
|
|
||||||
for l in binds: print(f" {l}")
|
|
||||||
print("\nDONE ->",OUT)
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
import os,tempfile,contextlib,io
|
|
||||||
tempfile.tempdir=os.path.abspath("_tess_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"); D=RUN/"pages"
|
|
||||||
OUT=RUN/"all_article_crops_t045"; PAPER="andhra_jyothi"
|
|
||||||
import shutil
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
for pg in (1,2,3,4):
|
|
||||||
png=str(D/f"page_{pg:03d}.png")
|
|
||||||
with contextlib.redirect_stdout(io.StringIO()):
|
|
||||||
regs=se.detect_regions(png, threshold=0.45) # NEW cutoff
|
|
||||||
regs=se.dedup_overlapping_regions(regs)
|
|
||||||
regs=se.merge_stacked_title_lines(regs,png)
|
|
||||||
regs=se.drop_masthead_regions(regs,PAPER,pg,png)
|
|
||||||
regs=se.promote_paragraph_titles(regs,png,PAPER)
|
|
||||||
ds=se.find_article_starts_by_dateline(regs,png,PAPER)
|
|
||||||
bars=separator_barriers(png,regs)
|
|
||||||
n=se.crop_all_article_blocks(png,regs,str(OUT),pg,dateline_starts=ds,sep_lines=bars)
|
|
||||||
nreg=len(regs)
|
|
||||||
print(f"page {pg}: {nreg} regions, {len(ds)} datelines, {n} crops")
|
|
||||||
print("DONE ->",OUT)
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 22 crops, 17 datelines ===
|
|
||||||
R 55 H bbox=[2796,291,4114,2002] 1318x1711 mem=8 {'image': 2, 'text': 5, 'doc_title': 1}
|
|
||||||
R 94 P bbox=[2113,299,2785,3703] 672x3404 mem=5 {'paragraph_title': 1, 'text': 4}
|
|
||||||
R 52 H bbox=[1080,371,2766,2350] 1686x1979 mem=6 {'doc_title': 1, 'image': 3, 'paragraph_title': 1, 'text': 1}
|
|
||||||
R 71 DL bbox=[769,913,1375,1781] 606x868 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 11 DL bbox=[694,1789,1440,2678] 746x889 mem=1 {'text': 1}
|
|
||||||
R 77 H bbox=[2793,1973,4114,3303] 1321x1330 mem=10 {'text': 6, 'image': 1, 'figure_title': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 66 P bbox=[694,2686,1391,3745] 697x1059 mem=4 {'paragraph_title': 1, 'text': 3}
|
|
||||||
R 51 P bbox=[1399,2686,2105,3458] 706x772 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 78 H bbox=[749,3466,2070,6049] 1321x2583 mem=11 {'text': 8, 'image': 1, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,3509,4114,6094] 1321x2585 mem=13 {'doc_title': 1, 'text': 9, 'image': 2, 'paragraph_title': 1}
|
|
||||||
R 4 DL bbox=[2113,3707,2752,4876] 639x1169 mem=2 {'text': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[750,3753,1388,4588] 638x835 mem=1 {'text': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=4 {'doc_title': 1, 'text': 3}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,1391,6637] 619x555 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 18 O bbox=[1430,6086,2049,6635] 619x549 mem=1 {'text': 1} ORPHAN
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
🖼 Orphan photo: R28 → article R78 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R28 → article R78 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R28 → article R78 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R28 → article R78 (an image must belong to an article)
|
|
||||||
|
|
||||||
=== page 2: 20 crops, 11 datelines ===
|
|
||||||
R 61 O bbox=[777,474,1506,2308] 729x1834 mem=8 {'image': 3, 'text': 3, 'figure_title': 2} IMG-ORPHAN? ORPHAN
|
|
||||||
R 82 H bbox=[695,478,2747,2308] 2052x1830 mem=10 {'text': 3, 'image': 4, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R 55 O bbox=[2549,479,2801,1028] 252x549 mem=2 {'image': 1, 'text': 1} IMG-ORPHAN? ORPHAN
|
|
||||||
R129 P bbox=[80,482,769,1053] 689x571 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 72 H bbox=[2755,482,3519,2232] 764x1750 mem=8 {'image': 3, 'text': 3, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R127 H bbox=[3353,482,4115,2215] 762x1733 mem=9 {'text': 4, 'image': 3, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 24 O bbox=[80,1061,687,2305] 607x1244 mem=4 {'image': 1, 'figure_title': 1, 'text': 2} IMG-ORPHAN? ORPHAN
|
|
||||||
R118 H bbox=[2795,2298,4115,2954] 1320x656 mem=4 {'doc_title': 1, 'text': 1, 'image': 2}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R113 H bbox=[72,2417,709,4641] 637x2224 mem=7 {'doc_title': 1, 'text': 3, 'image': 2, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,2685,4115,3999] 640x1314 mem=5 {'text': 3, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 4 F bbox=[2002,3658,2752,5938] 750x2280 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 3}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,1963,5939] 747x1229 mem=6 {'text': 3, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,6617] 478x1638 mem=6 {'text': 5, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 77 H bbox=[1217,5969,2752,6682] 1535x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
🖼 Orphan photo: R42 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R52 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R63 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R60 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R38 → article R72 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R48 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R42 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R52 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R63 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R60 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R38 → article R72 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R48 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R42 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R52 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R63 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R60 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R38 → article R72 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R48 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R42 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R52 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R63 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R60 → article R82 (an image must belong to an article)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 19 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2796,1049,4114,2002] 1318x953 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 52 H bbox=[664,1067,2749,2657] 2085x1590 mem=8 {'doc_title': 1, 'text': 3, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 94 P bbox=[2113,1941,2755,3257] 642x1316 mem=4 {'paragraph_title': 1, 'text': 3}
|
|
||||||
R 77 H bbox=[2793,1973,4114,3315] 1321x1342 mem=8 {'text': 6, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 66 P bbox=[693,2665,1391,3349] 698x684 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 51 P bbox=[1399,2665,2105,3349] 706x684 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R100 H bbox=[2113,2860,4114,4876] 2001x2016 mem=10 {'doc_title': 1, 'text': 5, 'image': 3, 'figure_title': 1}
|
|
||||||
R 99 H bbox=[750,3357,2068,4588] 1318x1231 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 78 H bbox=[749,3891,2070,6049] 1321x2158 mem=10 {'doc_title': 1, 'text': 8, 'figure_title': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=4 {'doc_title': 1, 'text': 3}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [664, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 21 crops, 11 datelines ===
|
|
||||||
R 61 O bbox=[777,474,1506,2308] 729x1834 mem=8 {'image': 3, 'text': 3, 'figure_title': 2} IMG-ORPHAN? ORPHAN
|
|
||||||
R 82 H bbox=[695,478,2747,2308] 2052x1830 mem=10 {'text': 3, 'image': 4, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R 55 O bbox=[2549,479,2801,1028] 252x549 mem=2 {'image': 1, 'text': 1} IMG-ORPHAN? ORPHAN
|
|
||||||
R129 P bbox=[80,482,769,1053] 689x571 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 72 H bbox=[2755,482,3519,2232] 764x1750 mem=8 {'image': 3, 'text': 3, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R127 H bbox=[3353,482,4115,2215] 762x1733 mem=9 {'text': 4, 'image': 3, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 24 O bbox=[80,1061,687,2305] 607x1244 mem=4 {'image': 1, 'figure_title': 1, 'text': 2} IMG-ORPHAN? ORPHAN
|
|
||||||
R118 H bbox=[2795,2298,4115,2954] 1320x656 mem=4 {'doc_title': 1, 'text': 1, 'image': 2}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R113 H bbox=[72,2417,709,4641] 637x2224 mem=7 {'doc_title': 1, 'text': 3, 'image': 2, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,2685,4115,3999] 640x1314 mem=5 {'text': 3, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 99 H bbox=[650,3656,2071,6145] 1421x2489 mem=10 {'image': 1, 'text': 7, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 10 F bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,1963,5939] 747x1229 mem=6 {'text': 3, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 4 F bbox=[2002,4723,2752,5938] 750x1215 mem=4 {'text': 2, 'paragraph_title': 2}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 77 H bbox=[1104,5969,2752,6682] 1648x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R139 H bbox=[614,6155,1168,6617] 554x462 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R139 doc_title [614, 6155, 1168, 6236] (un-boxed display headline band, ink=0.51)
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1104, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R72 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R42 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R48 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R52 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R60 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R63 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[664,1067,2755,3314] 2091x2247 mem=17 {'doc_title': 1, 'text': 9, 'image': 2, 'paragraph_title': 5}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [664, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2736] 646x2237 mem=8 {'paragraph_title': 1, 'image': 2, 'text': 3, 'figure_title': 2}
|
|
||||||
R118 H bbox=[2795,2298,4115,2954] 1320x656 mem=4 {'text': 1, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 14 DL bbox=[3475,2685,4115,3999] 640x1314 mem=5 {'text': 3, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[650,3656,2071,6145] 1421x2489 mem=10 {'image': 1, 'text': 7, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 10 F bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,1963,5939] 747x1229 mem=6 {'text': 3, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 4 F bbox=[2002,4723,2752,5938] 750x1215 mem=4 {'text': 2, 'paragraph_title': 2}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 77 H bbox=[1104,5969,2752,6682] 1648x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R139 H bbox=[614,6155,1168,6617] 554x462 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline SYNTH: R139 doc_title [614, 6155, 1168, 6236] (un-boxed display headline band, ink=0.51)
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1104, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2755,3314] 2067x2247 mem=17 {'doc_title': 1, 'text': 9, 'image': 2, 'paragraph_title': 5}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2736] 646x2237 mem=8 {'paragraph_title': 1, 'image': 2, 'text': 3, 'figure_title': 2}
|
|
||||||
R118 H bbox=[2795,2298,4115,2954] 1320x656 mem=4 {'text': 1, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 14 DL bbox=[3475,2685,4115,3999] 640x1314 mem=5 {'text': 3, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 4 F bbox=[2002,3658,2752,5938] 750x2280 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 3}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,1963,5939] 747x1229 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,6145] 478x1166 mem=5 {'text': 4, 'paragraph_title': 1}
|
|
||||||
R 77 H bbox=[1147,5193,2752,6694] 1605x1501 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R139 H bbox=[614,6155,1168,6617] 554x462 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline SYNTH: R139 doc_title [614, 6155, 1168, 6236] (un-boxed display headline band, ink=0.51)
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2755,3314] 2067x2247 mem=17 {'doc_title': 1, 'text': 9, 'image': 2, 'paragraph_title': 5}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2736] 646x2237 mem=8 {'paragraph_title': 1, 'image': 2, 'text': 3, 'figure_title': 2}
|
|
||||||
R118 H bbox=[2795,2298,4115,2957] 1320x659 mem=5 {'text': 2, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,3022,4115,3999] 640x977 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 88 P bbox=[2002,3658,2752,5938] 750x2280 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 3}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,1963,5939] 747x1229 mem=6 {'text': 3, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,6617] 478x1638 mem=6 {'text': 5, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 77 H bbox=[1147,5969,2752,6682] 1605x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2755,3314] 2067x2247 mem=17 {'doc_title': 1, 'text': 9, 'image': 2, 'paragraph_title': 5}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2209] 646x1710 mem=6 {'paragraph_title': 1, 'image': 1, 'text': 3, 'figure_title': 1}
|
|
||||||
R118 H bbox=[2795,2298,4115,2957] 1320x659 mem=5 {'text': 2, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=5 {'text': 2, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,3022,4115,3999] 640x977 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 88 P bbox=[2002,3658,2752,5938] 750x2280 mem=8 {'text': 4, 'image': 1, 'paragraph_title': 3}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,1963,5939] 747x1229 mem=6 {'text': 3, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,6617] 478x1638 mem=6 {'text': 5, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 77 H bbox=[1147,5969,2752,6682] 1605x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'doc_title': 1, 'text': 9, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2755,3314] 2067x2247 mem=17 {'doc_title': 1, 'text': 9, 'image': 2, 'paragraph_title': 5}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2209] 646x1710 mem=6 {'paragraph_title': 1, 'image': 1, 'text': 3, 'figure_title': 1}
|
|
||||||
R118 H bbox=[2795,2298,4115,2957] 1320x659 mem=5 {'text': 2, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=5 {'text': 2, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,3022,4115,3999] 640x977 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 88 P bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,2752,5939] 1536x1229 mem=10 {'text': 5, 'image': 1, 'doc_title': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,5185] 478x206 mem=1 {'text': 1}
|
|
||||||
R 92 F bbox=[653,5252,1127,5744] 474x492 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 90 F bbox=[685,5924,1099,6145] 414x221 mem=1 {'text': 1}
|
|
||||||
R 77 H bbox=[1147,5969,2752,6682] 1605x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R110 F bbox=[668,6258,1106,6617] 438x359 mem=1 {'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 12 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2796,1049,4114,2002] 1318x953 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 52 H bbox=[664,1067,2749,2657] 2085x1590 mem=8 {'doc_title': 1, 'text': 3, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 94 P bbox=[2113,1941,2755,3257] 642x1316 mem=4 {'paragraph_title': 1, 'text': 3}
|
|
||||||
R 77 H bbox=[2793,1973,4114,3315] 1321x1342 mem=8 {'text': 6, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 66 P bbox=[693,2665,1391,6678] 698x4013 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 51 P bbox=[1399,2665,2105,6678] 706x4013 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 99 H bbox=[749,2860,4114,6698] 3365x3838 mem=45 {'text': 30, 'image': 5, 'figure_title': 2, 'paragraph_title': 3, 'doc_title': 5}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3353, 4097, 3452] (un-boxed display headline band, ink=0.32)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [664, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 21 crops, 11 datelines ===
|
|
||||||
R 61 O bbox=[777,474,1506,2308] 729x1834 mem=8 {'image': 3, 'text': 3, 'figure_title': 2} IMG-ORPHAN? ORPHAN
|
|
||||||
R 82 H bbox=[695,478,2747,2308] 2052x1830 mem=10 {'text': 3, 'image': 4, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R 55 O bbox=[2549,479,2801,1028] 252x549 mem=2 {'image': 1, 'text': 1} IMG-ORPHAN? ORPHAN
|
|
||||||
R129 P bbox=[80,482,769,1053] 689x571 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 72 H bbox=[2755,482,3519,2232] 764x1750 mem=8 {'image': 3, 'text': 3, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R127 H bbox=[3353,482,4115,2215] 762x1733 mem=9 {'text': 4, 'image': 3, 'figure_title': 1, 'doc_title': 1}
|
|
||||||
R 24 O bbox=[80,1061,687,2305] 607x1244 mem=4 {'image': 1, 'figure_title': 1, 'text': 2} IMG-ORPHAN? ORPHAN
|
|
||||||
R118 H bbox=[2795,2298,4115,2954] 1320x656 mem=4 {'doc_title': 1, 'text': 1, 'image': 2}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R113 H bbox=[72,2417,709,4641] 637x2224 mem=7 {'doc_title': 1, 'text': 3, 'image': 2, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,2685,4115,3999] 640x1314 mem=5 {'text': 3, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 99 H bbox=[650,3656,2071,6145] 1421x2489 mem=10 {'image': 1, 'text': 7, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 10 F bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,1963,5939] 747x1229 mem=6 {'text': 3, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 4 F bbox=[2002,4723,2752,5938] 750x1215 mem=4 {'text': 2, 'paragraph_title': 2}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 77 H bbox=[1104,5969,2752,6682] 1648x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R139 H bbox=[614,6155,1168,6617] 554x462 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R139 doc_title [614, 6155, 1168, 6236] (un-boxed display headline band, ink=0.51)
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1104, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R72 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R42 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R48 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R52 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R60 → article R82 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R63 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 13 crops, 14 datelines ===
|
|
||||||
R 53 H bbox=[2792,1069,4115,3285] 1323x2216 mem=14 {'doc_title': 1, 'text': 9, 'image': 1, 'figure_title': 1, 'paragraph_title': 2}
|
|
||||||
R 46 H bbox=[684,1077,2784,3285] 2100x2208 mem=21 {'doc_title': 2, 'text': 11, 'image': 2, 'paragraph_title': 6}
|
|
||||||
R 66 H bbox=[99,1078,681,2654] 582x1576 mem=3 {'doc_title': 1, 'text': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[99,2678,680,4455] 581x1777 mem=6 {'text': 3, 'image': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 82 H bbox=[2114,3293,4115,5007] 2001x1714 mem=11 {'doc_title': 1, 'text': 7, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[749,3323,2069,4792] 1320x1469 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 3 DL bbox=[98,4463,741,5703] 643x1240 mem=2 {'text': 1, 'image': 1}
|
|
||||||
R 47 H bbox=[749,4850,2368,5588] 1619x738 mem=6 {'doc_title': 1, 'text': 2, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 93 H bbox=[2791,5058,4115,6247] 1324x1189 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
R 55 H bbox=[2137,5113,2736,6130] 599x1017 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 44 H bbox=[98,5711,681,6639] 583x928 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R100 H bbox=[750,5782,2072,6697] 1322x915 mem=5 {'doc_title': 1, 'text': 2, 'image': 2}
|
|
||||||
R 56 H bbox=[2564,6284,4115,6691] 1551x407 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline WIDEN: R100 [765, 6130, 1350, 6228] → [765, 6130, 1949, 6228] (un-boxed kicker ink alongside)
|
|
||||||
|
|
||||||
=== page 2: 16 crops, 15 datelines ===
|
|
||||||
R 61 H bbox=[931,490,4115,2536] 3184x2046 mem=32 {'text': 15, 'image': 8, 'doc_title': 2, 'paragraph_title': 5, 'figure_title': 2}
|
|
||||||
R106 H bbox=[2081,490,2753,5535] 672x5045 mem=6 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 2, 'paragraph_title': 1}
|
|
||||||
R105 P bbox=[78,498,898,1656] 820x1158 mem=5 {'paragraph_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R128 P bbox=[106,1664,860,2507] 754x843 mem=4 {'paragraph_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 57 H bbox=[751,2579,2754,4161] 2003x1582 mem=10 {'doc_title': 1, 'text': 7, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 69 H bbox=[2794,2589,4115,3863] 1321x1274 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R121 DL bbox=[70,2805,709,3948] 639x1143 mem=6 {'text': 3, 'image': 1, 'paragraph_title': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[752,3306,2070,5044] 1318x1738 mem=5 {'text': 4, 'doc_title': 1}
|
|
||||||
R 95 H bbox=[2795,3914,4115,4990] 1320x1076 mem=6 {'doc_title': 2, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 87 DL bbox=[73,3974,709,5049] 636x1075 mem=5 {'text': 2, 'image': 2, 'figure_title': 1}
|
|
||||||
R 80 H bbox=[2814,5054,4115,6172] 1301x1118 mem=7 {'text': 4, 'image': 2, 'doc_title': 1}
|
|
||||||
R115 DL bbox=[94,5097,1161,6624] 1067x1527 mem=5 {'text': 4, 'image': 1}
|
|
||||||
R107 H bbox=[1199,5102,2071,6685] 872x1583 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 74 F bbox=[658,5350,1139,6624] 481x1274 mem=4 {'text': 4}
|
|
||||||
R 7 DL bbox=[2114,5559,2754,6684] 640x1125 mem=3 {'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 90 H bbox=[2814,5760,3431,6635] 617x875 mem=4 {'doc_title': 1, 'text': 3}
|
|
||||||
R 76 H bbox=[3474,5970,4115,6634] 641x664 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R12 → 2 bands at rules [4170]
|
|
||||||
🖼 Orphan photo: R36 → article R87 (an image must belong to an article)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon District_20260513_20260610_140735/all_article_crops_review
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 19 crops, 14 datelines ===
|
|
||||||
R 53 H bbox=[2792,1069,4115,3285] 1323x2216 mem=14 {'text': 9, 'image': 1, 'doc_title': 1, 'figure_title': 1, 'paragraph_title': 2}
|
|
||||||
R 46 H bbox=[684,1077,2784,2187] 2100x1110 mem=8 {'doc_title': 2, 'text': 4, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 84 P bbox=[1433,1077,2107,2755] 674x1678 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 66 H bbox=[99,1078,681,2654] 582x1576 mem=3 {'doc_title': 1, 'text': 1, 'paragraph_title': 1}
|
|
||||||
R 45 P bbox=[689,2195,1425,3315] 736x1120 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 72 P bbox=[2115,2195,2784,2915] 669x720 mem=5 {'paragraph_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 65 H bbox=[99,2678,680,4291] 581x1613 mem=4 {'text': 2, 'image': 1, 'doc_title': 1}
|
|
||||||
R 48 P bbox=[1433,2763,2107,3315] 674x552 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 60 P bbox=[2115,2923,2784,3285] 669x362 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 82 H bbox=[2114,3293,4115,5007] 2001x1714 mem=11 {'text': 7, 'image': 1, 'figure_title': 1, 'paragraph_title': 1, 'doc_title': 1}
|
|
||||||
R 75 H bbox=[749,3323,2069,4792] 1320x1469 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 86 P bbox=[102,4299,741,4455] 639x156 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 3 DL bbox=[98,4463,741,5703] 643x1240 mem=2 {'text': 1, 'image': 1}
|
|
||||||
R 47 H bbox=[749,4850,2368,5588] 1619x738 mem=6 {'doc_title': 1, 'text': 2, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 93 H bbox=[2791,5058,4115,6247] 1324x1189 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
R 55 H bbox=[2137,5113,2736,6130] 599x1017 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 44 H bbox=[98,5711,681,6639] 583x928 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R100 H bbox=[750,5782,2072,6697] 1322x915 mem=5 {'doc_title': 1, 'text': 2, 'image': 2}
|
|
||||||
R 56 H bbox=[2564,6284,4115,6691] 1551x407 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline WIDEN: R100 [765, 6130, 1350, 6228] → [765, 6130, 1949, 6228] (un-boxed kicker ink alongside)
|
|
||||||
|
|
||||||
=== page 2: 19 crops, 15 datelines ===
|
|
||||||
R 61 H bbox=[931,490,4115,2536] 3184x2046 mem=32 {'text': 15, 'image': 8, 'doc_title': 2, 'paragraph_title': 5, 'figure_title': 2}
|
|
||||||
R127 P bbox=[2081,490,2754,4147] 673x3657 mem=3 {'paragraph_title': 1, 'text': 1, 'figure_title': 1}
|
|
||||||
R105 P bbox=[78,498,898,1518] 820x1020 mem=5 {'paragraph_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R121 DL bbox=[70,1526,743,3817] 673x2291 mem=4 {'text': 2, 'image': 1, 'figure_title': 1}
|
|
||||||
R128 P bbox=[106,1664,860,2507] 754x843 mem=4 {'paragraph_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 57 H bbox=[754,2579,2751,3639] 1997x1060 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 69 H bbox=[2794,2589,4115,3863] 1321x1274 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 4 DL bbox=[751,3306,2071,4149] 1320x843 mem=3 {'text': 3}
|
|
||||||
R 81 P bbox=[75,3825,743,3966] 668x141 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 95 H bbox=[2795,3914,4115,4990] 1320x1076 mem=6 {'doc_title': 2, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 87 DL bbox=[73,3974,709,5049] 636x1075 mem=5 {'text': 2, 'image': 2, 'figure_title': 1}
|
|
||||||
R100 H bbox=[752,4203,2070,5044] 1318x841 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R106 H bbox=[2114,4209,2753,5535] 639x1326 mem=5 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 80 H bbox=[2814,5054,4115,6172] 1301x1118 mem=7 {'text': 4, 'image': 2, 'doc_title': 1}
|
|
||||||
R115 DL bbox=[94,5097,1161,6624] 1067x1527 mem=5 {'text': 4, 'image': 1}
|
|
||||||
R107 H bbox=[1199,5102,2071,6685] 872x1583 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 74 F bbox=[658,5350,1139,6624] 481x1274 mem=4 {'text': 4}
|
|
||||||
R 7 DL bbox=[2114,5559,2754,6684] 640x1125 mem=3 {'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 90 H bbox=[2814,5760,3431,6635] 617x875 mem=4 {'doc_title': 1, 'text': 3}
|
|
||||||
R 76 H bbox=[3474,5970,4115,6634] 641x664 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R12 → 2 bands at rules [4170]
|
|
||||||
🖼 Orphan photo: R36 → article R87 (an image must belong to an article)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon District_20260513_20260610_140735/all_article_crops_review
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 14 crops, 14 datelines ===
|
|
||||||
R 53 H bbox=[2792,1069,4115,3285] 1323x2216 mem=14 {'text': 9, 'image': 1, 'doc_title': 1, 'figure_title': 1, 'paragraph_title': 2}
|
|
||||||
R 46 H bbox=[684,1077,2784,3285] 2100x2208 mem=21 {'text': 11, 'image': 2, 'paragraph_title': 6, 'doc_title': 2}
|
|
||||||
R 66 H bbox=[99,1078,681,2654] 582x1576 mem=3 {'doc_title': 1, 'text': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[99,2678,680,4291] 581x1613 mem=4 {'text': 2, 'image': 1, 'doc_title': 1}
|
|
||||||
R 82 H bbox=[2114,3293,4115,5007] 2001x1714 mem=11 {'text': 7, 'image': 1, 'figure_title': 1, 'paragraph_title': 1, 'doc_title': 1}
|
|
||||||
R 75 H bbox=[749,3323,2069,4792] 1320x1469 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 86 P bbox=[102,4299,741,4455] 639x156 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 3 DL bbox=[98,4463,741,5703] 643x1240 mem=2 {'text': 1, 'image': 1}
|
|
||||||
R 47 H bbox=[749,4850,2368,5588] 1619x738 mem=6 {'doc_title': 1, 'text': 2, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 93 H bbox=[2791,5058,4115,6247] 1324x1189 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
R 55 H bbox=[2137,5113,2736,6130] 599x1017 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 44 H bbox=[98,5711,681,6639] 583x928 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R100 H bbox=[750,5782,2072,6697] 1322x915 mem=5 {'doc_title': 1, 'text': 2, 'image': 2}
|
|
||||||
R 56 H bbox=[2564,6284,4115,6691] 1551x407 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline WIDEN: R100 [765, 6130, 1350, 6228] → [765, 6130, 1949, 6228] (un-boxed kicker ink alongside)
|
|
||||||
|
|
||||||
=== page 2: 16 crops, 15 datelines ===
|
|
||||||
R 61 H bbox=[931,490,4115,2536] 3184x2046 mem=32 {'text': 15, 'image': 8, 'doc_title': 2, 'paragraph_title': 5, 'figure_title': 2}
|
|
||||||
R106 H bbox=[2081,490,2753,5535] 672x5045 mem=6 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 2, 'paragraph_title': 1}
|
|
||||||
R105 P bbox=[78,498,898,1656] 820x1158 mem=5 {'paragraph_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R128 P bbox=[106,1664,860,2507] 754x843 mem=4 {'paragraph_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 57 H bbox=[751,2579,2754,4161] 2003x1582 mem=11 {'text': 8, 'image': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 69 H bbox=[2794,2589,4115,3863] 1321x1274 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R121 DL bbox=[70,2805,709,3948] 639x1143 mem=6 {'text': 3, 'image': 1, 'paragraph_title': 1, 'figure_title': 1}
|
|
||||||
R 95 H bbox=[2795,3914,4115,4990] 1320x1076 mem=6 {'doc_title': 2, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 87 DL bbox=[73,3974,709,5049] 636x1075 mem=5 {'text': 2, 'image': 2, 'figure_title': 1}
|
|
||||||
R100 H bbox=[752,4203,2070,5044] 1318x841 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R 80 H bbox=[2814,5054,4115,6172] 1301x1118 mem=7 {'text': 4, 'image': 2, 'doc_title': 1}
|
|
||||||
R115 DL bbox=[94,5097,1161,6624] 1067x1527 mem=5 {'text': 4, 'image': 1}
|
|
||||||
R107 H bbox=[1199,5102,2071,6685] 872x1583 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 74 F bbox=[658,5350,1139,6624] 481x1274 mem=4 {'text': 4}
|
|
||||||
R 7 DL bbox=[2114,5559,2754,6684] 640x1125 mem=3 {'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 90 H bbox=[2814,5760,3431,6635] 617x875 mem=4 {'doc_title': 1, 'text': 3}
|
|
||||||
R 76 H bbox=[3474,5970,4115,6634] 641x664 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R12 → 2 bands at rules [4170]
|
|
||||||
🖼 Orphan photo: R36 → article R87 (an image must belong to an article)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon District_20260513_20260610_140735/all_article_crops_review
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 14 crops, 14 datelines ===
|
|
||||||
R 53 H bbox=[2792,1069,4115,3285] 1323x2216 mem=14 {'text': 9, 'image': 1, 'doc_title': 1, 'figure_title': 1, 'paragraph_title': 2}
|
|
||||||
R 46 H bbox=[684,1077,2784,3285] 2100x2208 mem=21 {'text': 11, 'image': 2, 'paragraph_title': 6, 'doc_title': 2}
|
|
||||||
R 66 H bbox=[99,1078,681,2654] 582x1576 mem=3 {'doc_title': 1, 'text': 1, 'paragraph_title': 1}
|
|
||||||
R 65 H bbox=[99,2678,680,4291] 581x1613 mem=4 {'text': 2, 'image': 1, 'doc_title': 1}
|
|
||||||
R 82 H bbox=[2114,3293,4115,5007] 2001x1714 mem=11 {'text': 7, 'image': 1, 'figure_title': 1, 'paragraph_title': 1, 'doc_title': 1}
|
|
||||||
R 75 H bbox=[749,3323,2069,4792] 1320x1469 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 86 P bbox=[102,4299,741,4455] 639x156 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 3 DL bbox=[98,4463,741,5703] 643x1240 mem=2 {'text': 1, 'image': 1}
|
|
||||||
R 47 H bbox=[749,4850,2368,5588] 1619x738 mem=6 {'doc_title': 1, 'text': 2, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 93 H bbox=[2791,5058,4115,6247] 1324x1189 mem=6 {'doc_title': 1, 'text': 3, 'image': 1, 'figure_title': 1}
|
|
||||||
R 55 H bbox=[2137,5113,2736,6130] 599x1017 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 44 H bbox=[98,5711,681,6639] 583x928 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R100 H bbox=[750,5782,2072,6697] 1322x915 mem=5 {'doc_title': 1, 'text': 2, 'image': 2}
|
|
||||||
R 56 H bbox=[2564,6284,4115,6691] 1551x407 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline WIDEN: R100 [765, 6130, 1350, 6228] → [765, 6130, 1949, 6228] (un-boxed kicker ink alongside)
|
|
||||||
|
|
||||||
=== page 2: 16 crops, 15 datelines ===
|
|
||||||
R 61 H bbox=[931,490,4115,2536] 3184x2046 mem=33 {'text': 15, 'image': 8, 'doc_title': 2, 'paragraph_title': 5, 'figure_title': 3}
|
|
||||||
R105 P bbox=[78,498,898,1656] 820x1158 mem=5 {'paragraph_title': 1, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R128 P bbox=[106,1664,860,2507] 754x843 mem=4 {'paragraph_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 57 H bbox=[751,2579,2754,4161] 2003x1582 mem=11 {'text': 8, 'image': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 69 H bbox=[2794,2589,4115,3863] 1321x1274 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R121 DL bbox=[70,2805,709,3948] 639x1143 mem=6 {'text': 3, 'image': 1, 'paragraph_title': 1, 'figure_title': 1}
|
|
||||||
R 95 H bbox=[2795,3914,4115,4990] 1320x1076 mem=6 {'doc_title': 2, 'image': 1, 'text': 2, 'figure_title': 1}
|
|
||||||
R 87 DL bbox=[73,3974,709,5049] 636x1075 mem=5 {'text': 2, 'image': 2, 'figure_title': 1}
|
|
||||||
R100 H bbox=[752,4203,2070,5044] 1318x841 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R106 H bbox=[2114,4209,2753,5535] 639x1326 mem=5 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1, 'paragraph_title': 1}
|
|
||||||
R 80 H bbox=[2814,5054,4115,6172] 1301x1118 mem=7 {'text': 4, 'image': 2, 'doc_title': 1}
|
|
||||||
R115 DL bbox=[94,5097,1161,6624] 1067x1527 mem=5 {'text': 4, 'image': 1}
|
|
||||||
R107 H bbox=[1199,5102,2071,6685] 872x1583 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 74 F bbox=[658,5350,1139,6624] 481x1274 mem=4 {'text': 4}
|
|
||||||
R 7 DL bbox=[2114,5559,2754,6684] 640x1125 mem=3 {'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 90 H bbox=[2814,5760,3431,6635] 617x875 mem=4 {'doc_title': 1, 'text': 3}
|
|
||||||
R 76 H bbox=[3474,5970,4115,6634] 641x664 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R12 → 2 bands at rules [4170]
|
|
||||||
🖼 Orphan photo: R36 → article R87 (an image must belong to an article)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon District_20260513_20260610_140735/all_article_crops_review
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 19 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'text': 9, 'image': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2749,2854] 2061x1787 mem=9 {'doc_title': 1, 'text': 4, 'image': 2, 'paragraph_title': 2}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 94 P bbox=[2113,1941,2755,3257] 642x1316 mem=4 {'paragraph_title': 1, 'text': 3}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 66 P bbox=[749,2686,1391,3302] 642x616 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 51 P bbox=[1399,2862,2105,3349] 706x487 mem=2 {'paragraph_title': 1, 'text': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2209] 646x1710 mem=6 {'paragraph_title': 1, 'image': 1, 'text': 3, 'figure_title': 1}
|
|
||||||
R118 H bbox=[2795,2298,4115,2957] 1320x659 mem=5 {'text': 2, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=5 {'text': 2, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,3022,4115,3999] 640x977 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 88 P bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,2752,5939] 1536x1229 mem=10 {'text': 5, 'image': 1, 'doc_title': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,5185] 478x206 mem=1 {'text': 1}
|
|
||||||
R 92 F bbox=[653,5252,1127,5744] 474x492 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 90 F bbox=[685,5924,1099,6145] 414x221 mem=1 {'text': 1}
|
|
||||||
R 77 H bbox=[1147,5969,2752,6682] 1605x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R110 F bbox=[668,6258,1106,6617] 438x359 mem=1 {'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'text': 9, 'image': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2755,3314] 2067x2247 mem=17 {'text': 9, 'image': 2, 'paragraph_title': 5, 'doc_title': 1}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2209] 646x1710 mem=6 {'paragraph_title': 1, 'image': 1, 'text': 3, 'figure_title': 1}
|
|
||||||
R118 H bbox=[2795,2298,4115,2957] 1320x659 mem=5 {'text': 2, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=5 {'text': 2, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,3022,4115,3999] 640x977 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 88 P bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,2752,5939] 1536x1229 mem=10 {'text': 5, 'image': 1, 'doc_title': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,5185] 478x206 mem=1 {'text': 1}
|
|
||||||
R 92 F bbox=[653,5252,1127,5744] 474x492 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 90 F bbox=[685,5924,1099,6145] 414x221 mem=1 {'text': 1}
|
|
||||||
R 77 H bbox=[1147,5969,2752,6682] 1605x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R110 F bbox=[668,6258,1106,6617] 438x359 mem=1 {'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'text': 9, 'image': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2755,3314] 2067x2247 mem=17 {'text': 9, 'image': 2, 'paragraph_title': 5, 'doc_title': 1}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2209] 646x1710 mem=6 {'paragraph_title': 1, 'image': 1, 'text': 3, 'figure_title': 1}
|
|
||||||
R118 H bbox=[2795,2298,4115,2957] 1320x659 mem=5 {'text': 2, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=5 {'text': 2, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,3022,4115,3999] 640x977 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 88 P bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,2752,5939] 1536x1229 mem=10 {'text': 5, 'image': 1, 'doc_title': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,5185] 478x206 mem=1 {'text': 1}
|
|
||||||
R 92 F bbox=[653,5252,1127,5744] 474x492 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 90 F bbox=[685,5924,1099,6145] 414x221 mem=1 {'text': 1}
|
|
||||||
R 77 H bbox=[1147,5969,2752,6682] 1605x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R110 F bbox=[668,6258,1106,6617] 438x359 mem=1 {'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
|
|
||||||
=== page 1: 16 crops, 16 datelines ===
|
|
||||||
R 55 H bbox=[2763,1049,4114,2732] 1351x1683 mem=12 {'text': 9, 'image': 1, 'doc_title': 1, 'paragraph_title': 1}
|
|
||||||
R 52 H bbox=[688,1067,2755,3314] 2067x2247 mem=17 {'text': 9, 'image': 2, 'paragraph_title': 5, 'doc_title': 1}
|
|
||||||
R 83 H bbox=[92,1079,686,2507] 594x1428 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 72 H bbox=[92,2536,685,3404] 593x868 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 77 H bbox=[2793,2740,4114,3303] 1321x563 mem=4 {'doc_title': 1, 'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R100 H bbox=[2113,3353,4113,4297] 2000x944 mem=7 {'doc_title': 1, 'text': 5, 'image': 1}
|
|
||||||
R 99 H bbox=[750,3357,2069,4605] 1319x1248 mem=8 {'doc_title': 1, 'text': 5, 'image': 1, 'figure_title': 1}
|
|
||||||
R 67 H bbox=[92,3432,686,4743] 594x1311 mem=3 {'doc_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 50 H bbox=[2112,4357,2752,5581] 640x1224 mem=5 {'text': 3, 'image': 1, 'doc_title': 1}
|
|
||||||
R 54 H bbox=[2793,4368,4114,6094] 1321x1726 mem=9 {'doc_title': 1, 'text': 6, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 78 H bbox=[749,4622,2070,6049] 1321x1427 mem=7 {'doc_title': 1, 'text': 6}
|
|
||||||
R 9 DL bbox=[92,4771,685,5982] 593x1211 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 5 DL bbox=[2112,5609,2753,6686] 641x1077 mem=2 {'text': 1, 'paragraph_title': 1}
|
|
||||||
R 75 H bbox=[91,6012,688,6640] 597x628 mem=2 {'doc_title': 1, 'text': 1}
|
|
||||||
R 79 P bbox=[772,6082,2049,6637] 1277x555 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R 98 H bbox=[2793,6114,4114,6696] 1321x582 mem=3 {'doc_title': 1, 'text': 2}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
📐 Sakshi headline SYNTH: R100 doc_title [2126, 3353, 4097, 3452] (un-boxed display headline band, ink=0.35)
|
|
||||||
📐 Sakshi headline SYNTH: R99 doc_title [763, 3357, 2068, 3452] (un-boxed display headline band, ink=0.30)
|
|
||||||
📐 Sakshi headline WIDEN: R52 [1182, 1067, 2738, 1327] → [688, 1067, 2738, 1327] (un-boxed kicker ink alongside)
|
|
||||||
🗞️ Masthead: dropped 5 Sakshi top-band region(s) [59, 62, 63, 64, 71] (above first headline y=1049)
|
|
||||||
|
|
||||||
=== page 2: 17 crops, 11 datelines ===
|
|
||||||
R 82 H bbox=[777,474,2801,2212] 2024x1738 mem=20 {'text': 7, 'image': 8, 'figure_title': 4, 'doc_title': 1}
|
|
||||||
R127 H bbox=[2755,485,4086,2232] 1331x1747 mem=17 {'text': 8, 'image': 6, 'figure_title': 2, 'doc_title': 1}
|
|
||||||
R129 P bbox=[95,499,741,2209] 646x1710 mem=6 {'paragraph_title': 1, 'image': 1, 'text': 3, 'figure_title': 1}
|
|
||||||
R118 H bbox=[2795,2298,4115,2957] 1320x659 mem=5 {'text': 2, 'image': 2, 'doc_title': 1}
|
|
||||||
R 91 H bbox=[72,2313,707,3101] 635x788 mem=5 {'text': 2, 'image': 1, 'doc_title': 1, 'figure_title': 1}
|
|
||||||
R 41 H bbox=[753,2316,2753,3600] 2000x1284 mem=11 {'text': 9, 'doc_title': 1, 'image': 1}
|
|
||||||
R 3 DL bbox=[2761,2958,3467,4049] 706x1091 mem=3 {'text': 1, 'image': 1, 'figure_title': 1}
|
|
||||||
R 14 DL bbox=[3475,3022,4115,3999] 640x977 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R113 H bbox=[72,3129,709,4641] 637x1512 mem=5 {'doc_title': 1, 'text': 3, 'image': 1}
|
|
||||||
R 99 H bbox=[752,3656,2071,4649] 1319x993 mem=5 {'image': 1, 'text': 3, 'doc_title': 1}
|
|
||||||
R 88 P bbox=[2113,3658,2752,4643] 639x985 mem=4 {'text': 2, 'image': 1, 'paragraph_title': 1}
|
|
||||||
R 70 H bbox=[2760,4057,4115,5702] 1355x1645 mem=11 {'doc_title': 1, 'text': 9, 'image': 1}
|
|
||||||
R 93 H bbox=[1216,4710,2752,5939] 1536x1229 mem=10 {'text': 5, 'image': 1, 'doc_title': 1, 'paragraph_title': 2, 'figure_title': 1}
|
|
||||||
R136 P bbox=[95,4735,1161,5529] 1066x794 mem=3 {'paragraph_title': 1, 'text': 1, 'image': 1}
|
|
||||||
R 44 F bbox=[650,4979,1128,5185] 478x206 mem=1 {'text': 1}
|
|
||||||
R 92 F bbox=[653,5252,1127,5744] 474x492 mem=3 {'text': 2, 'paragraph_title': 1}
|
|
||||||
R111 P bbox=[120,5618,603,6628] 483x1010 mem=3 {'paragraph_title': 1, 'text': 2}
|
|
||||||
R 98 H bbox=[2798,5710,4115,6696] 1317x986 mem=6 {'doc_title': 1, 'text': 4, 'image': 1}
|
|
||||||
R 90 F bbox=[685,5924,1099,6145] 414x221 mem=1 {'text': 1}
|
|
||||||
R 77 H bbox=[1147,5969,2752,6682] 1605x713 mem=4 {'text': 3, 'doc_title': 1}
|
|
||||||
R110 F bbox=[668,6258,1106,6617] 438x359 mem=1 {'text': 1}
|
|
||||||
>>> image-only orphans REMAINING: []
|
|
||||||
─ Sakshi rule-split: R41 → 3 bands at rules [1066, 2252]
|
|
||||||
─ Sakshi rule-split: R74 → 2 bands at rules [1066]
|
|
||||||
📐 Sakshi headline WIDEN: R77 [1217, 5969, 2690, 6109] → [1147, 5969, 2690, 6109] (un-boxed kicker ink alongside)
|
|
||||||
🖼 Orphan photo: R38 → article R127 (an image must belong to an article)
|
|
||||||
🖼 Orphan photo: R61 → article R82 (an image must belong to an article)
|
|
||||||
🗞️ Masthead: dropped 4 Sakshi top-band region(s) [68, 71, 84, 104] (above first headline y=499)
|
|
||||||
|
|
||||||
DONE -> output/Sakshi_Jangaon_District_20260520_20260609_210104/all_article_crops_review
|
|
||||||
50
_sim71.py
50
_sim71.py
|
|
@ -1,50 +0,0 @@
|
||||||
"""Sandbox simulation of the Sakshi Jangaon page-1/2 crop run.
|
|
||||||
Telugu tesseract is unavailable here, so dateline starts are INJECTED with the
|
|
||||||
exact anchor set the real 20260609_210104 run found (DL anchors from the saved
|
|
||||||
crop filenames). Usage: python3 _sim71.py <tag>
|
|
||||||
Writes block table to stdout and crops to output/.../_sim_crops_<tag>/."""
|
|
||||||
import sys, types
|
|
||||||
sys.modules.setdefault("fitz", types.ModuleType("fitz"))
|
|
||||||
import os, tempfile, contextlib, io, json, shutil
|
|
||||||
tempfile.tempdir = os.path.abspath("_tess_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
|
|
||||||
|
|
||||||
TAG = sys.argv[1] if len(sys.argv) > 1 else "base"
|
|
||||||
RUN = Path("output/Sakshi_Jangaon_District_20260520_20260609_210104"); D = RUN / "pages"
|
|
||||||
OUT = RUN / f"_sim_crops_{TAG}"; P = "sakshi"
|
|
||||||
DL_IDS = {1: [71, 11, 4, 3, 9, 5], 2: []} # real run's headline-less datelines
|
|
||||||
if OUT.exists(): shutil.rmtree(OUT)
|
|
||||||
|
|
||||||
for pg in (1, 2):
|
|
||||||
png = str(D / f"page_{pg:03d}.png")
|
|
||||||
regs = json.loads((D / f"page_{pg:03d}.regions.json").read_text())["regions"]
|
|
||||||
buf = io.StringIO()
|
|
||||||
with contextlib.redirect_stdout(buf):
|
|
||||||
regs = se.dedup_overlapping_regions(regs)
|
|
||||||
regs = se.merge_stacked_title_lines(regs, png)
|
|
||||||
regs = se.drop_masthead_regions(regs, P, pg, png)
|
|
||||||
regs = se.drop_classifieds_regions(regs, png)
|
|
||||||
regs = se.tag_legal_notices(regs, png)
|
|
||||||
regs = se.promote_paragraph_titles(regs, png, P)
|
|
||||||
regs = se.mark_bullet_titles(regs, png)
|
|
||||||
rm = {r["id"]: r for r in regs}
|
|
||||||
ds = [{"region_id": i, "dateline": "sim:", "bbox": rm[i]["bbox"],
|
|
||||||
"headline_region": None} for i in DL_IDS[pg] if i in rm]
|
|
||||||
bars = separator_barriers(png, regs)
|
|
||||||
blocks = se.cluster_all_article_blocks(regs, ds, sep_lines=bars)
|
|
||||||
n = se.crop_all_article_blocks(png, regs, str(OUT), pg,
|
|
||||||
dateline_starts=ds, sep_lines=bars)
|
|
||||||
print(f"=== page {pg}: {n} crops, {len(ds)} injected datelines ===")
|
|
||||||
for b in sorted(blocks, key=lambda b: (b["bbox"][1], b["bbox"][0])):
|
|
||||||
x1, y1, x2, y2 = b["bbox"]
|
|
||||||
types = {}
|
|
||||||
for m in b["members"]:
|
|
||||||
t = rm.get(m, {}).get("type", "?"); types[t] = types.get(t, 0) + 1
|
|
||||||
print(f" R{b['anchor_id']:>3} {b['kind']} bbox=[{x1},{y1},{x2},{y2}] "
|
|
||||||
f"{x2-x1}x{y2-y1} mem={len(b['members'])} {types}")
|
|
||||||
for l in buf.getvalue().splitlines():
|
|
||||||
if "Masthead" in l: print(" ", l.strip())
|
|
||||||
print("DONE ->", OUT)
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 218 KiB |
|
|
@ -1,18 +0,0 @@
|
||||||
ADEA ASEXE shotloo Sr crsrAs
|
|
||||||
Boas dof datwera, Ads Soseor
|
|
||||||
weak? Hiirtht dod Siro. Kew0e vOt
|
|
||||||
BORD arLBSCOS TS SUNG HOTS
|
|
||||||
SS SHS EH ert. SYS OED HU,
|
|
||||||
Brag SomoSodS Dweakl SASHyw
|
|
||||||
TY. 80 OY GSo DHWBwHS S%So Bra
|
|
||||||
oer BS BP wid Sard dren Sewn
|
|
||||||
Sndke dSKo Hnowt, & Ysos!
|
|
||||||
BraS Zodoh soerr Gardsivg
|
|
||||||
DUS HEH OZ dbx Som Soebrey
|
|
||||||
Perle SH Spor Sad Seared. ac
|
|
||||||
GAS SOShowsh dso SO advert
|
|
||||||
Sto, SEBS SrerS ZokoH Sodh ws
|
|
||||||
B%o BLISS SS SyPHHS Ser
|
|
||||||
UPSPAE SOY. wisp Ero HS Koha
|
|
||||||
SE SK0. Stot dSthen Kar aeh'B
|
|
||||||
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 178 KiB |
|
|
@ -1,12 +0,0 @@
|
||||||
BS: GSS Sel Ste (ohowS)
|
|
||||||
Srghoh SES wQos*s eer wpideSo
|
|
||||||
& NODA. 2025 ws8 LeeS* Snifo Tox
|
|
||||||
©%8 S0508 ZHf6* ToXoT09 s0A8
|
|
||||||
SeghoF SQ erp, 90.59 wo Karciws
|
|
||||||
8008. 20m 72,194 0 LY soshoh
|
|
||||||
wokofire 408. warshdS(SgE ssp
|
|
||||||
espe) Soms 2,33,75 Tre, 31.93 wdor
|
|
||||||
608. vert & 3018 5 d45* HOR ay
|
|
||||||
Segboh SOB 3.214 Sow wonsen
|
|
||||||
weberthen BDar%.
|
|
||||||
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 110 KiB |
|
|
@ -1,18 +0,0 @@
|
||||||
BPSASOU: DeogS adFgroo wdhen L608
|
|
||||||
woxso maaan. oY SAijo mddos
|
|
||||||
Dio AGSL0B. wd Gesey wwe od:
|
|
||||||
BOE nO AE SHE wSsr¥o ¥Oy0N0
|
|
||||||
&. SiSHoE NDS Gadag we nod
|
|
||||||
CRE AHIYHasryon. wond Neds’
|
|
||||||
PH SrSo nddo woo SASS ors
|
|
||||||
Gets. OY aro{go SpSaras Higher, OF
|
|
||||||
ROARS, DAS PASS, Rrcsorer Bo S*ar
|
|
||||||
doS HS Sy b3de Se, Smaysd
|
|
||||||
aPOE URES DS WES BdaryWS SEyhe
|
|
||||||
S850 wdgsore Boorres Ga GE & Hearrs
|
|
||||||
RS Yond OWGE doryim Sod. oHo8
|
|
||||||
wont DeiegS Soxseo ae ads’, bf es
|
|
||||||
8, éé a ALa6, dé 25K4495 aod
|
|
||||||
Bo Exp 0% J actyso Sodd davrd) s08.
|
|
||||||
BaSSoo8 nado BE 4408. 3&% &%7.0
|
|
||||||
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 185 KiB |
|
|
@ -1,18 +0,0 @@
|
||||||
ADEA ASEXE shotloo Sr crsrAs
|
|
||||||
Boas dof datwera, Ads Soseor
|
|
||||||
weak? Hiirtht dod Siro. Kew0e vOt
|
|
||||||
BORD arLBSCOS TS SUNG HOTS
|
|
||||||
SS SHS EH ert. SYS OED HU,
|
|
||||||
Brag SomoSodS Dweakl SASHyw
|
|
||||||
TY. 80 OY GSo DHWBwHS S%So Bra
|
|
||||||
oer BS BP wid Sard dren Sewn
|
|
||||||
Sndke dSKo Hnowt, & Ysos!
|
|
||||||
BraS Zodoh soerr Gardsivg
|
|
||||||
DUS HEH OZ dbx Som Soebrey
|
|
||||||
Perle SH Spor Sad Seared. ac
|
|
||||||
GAS SOShowsh dso SO advert
|
|
||||||
Sto, SEBS SrerS ZokoH Sodh ws
|
|
||||||
B%o BLISS SS SyPHHS Ser
|
|
||||||
UPSPAE SOY. wisp Ero HS Koha
|
|
||||||
SE SK0. Stot dSthen Kar aeh'B
|
|
||||||
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 178 KiB |
|
|
@ -1,19 +0,0 @@
|
||||||
Sorisarote: SONS Srsowird dir
|
|
||||||
wdho OY Siro Sho vbsrthen Go
|
|
||||||
wy GS ONSey BOB. donBI*G
|
|
||||||
oped wostren adie Stgods
|
|
||||||
DRaho BORod. ak DoxRebo sod by
|
|
||||||
G0dS GSS FONE DoF, HAtyeo Dory»,
|
|
||||||
ProreosD Aor BOAS Swydrcen,
|
|
||||||
RES BL FORH, Divwr pasos aided
|
|
||||||
SEfoh wOwrcre Berk Ago dasep
|
|
||||||
Seirardo. 180 Sars! sorgsties wxosoe
|
|
||||||
©, BRAS Sbxfeo Ntglrodocss Bots
|
|
||||||
BrHoxood SSarigen Syoxsew BOLO
|
|
||||||
8. wr Goss armen Sorl¥arwo &
|
|
||||||
Ahoo AKowo Sk O50 waisr¥o 6%)
|
|
||||||
ey BSrardo. Bots 2S sossoWo 5
|
|
||||||
Kotor PSE darosoiiyee Seord¥od. Sao
|
|
||||||
oO S8orsed woerss 180 See’ wh
|
|
||||||
DO dxoen Grd JasD) dotwod.
|
|
||||||
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 186 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue