Files
Aislo/resources/tester/scratch/audit_ditto_sections_pdf.py
T

52 lines
2.1 KiB
Python

import glob, re, os, sys, fitz
sys.stdout.reconfigure(encoding='utf-8')
pdf_path = 'resources/knowledge/original/원가계산/건설공사_표준품셈/2026년_건설공사_표준품셈.pdf'
doc = fitz.open(pdf_path)
# Ditot / remarks targets
target_sections = [
('제4장_궤도공사.md', '4-5-2', 205),
('제7장_항만공사.md', '7-1-2', 29),
('제7장_항만공사.md', '7-1-4', 86),
('제8장_지반조사.md', '8-4-2', 271),
('제9장_측량.md', '9-3-1', 703),
('제9장_측량.md', '9-5-4', 2701),
('제13장_플랜트설비공사.md', '13-4-3', 1544),
('제13장_플랜트설비공사.md', '13-5-1', 1703),
('제13장_플랜트설비공사.md', '13-5-2', 1734),
('제13장_플랜트설비공사.md', '13-7-14', 3012),
('제13장_플랜트설비공사.md', '13-7-16', 3040),
('제13장_플랜트설비공사.md', '13-7-17', 3053),
('제13장_플랜트설비공사.md', '13-7-18', 3067),
('제13장_플랜트설비공사.md', '13-7-19', 3079),
('제13장_플랜트설비공사.md', '13-7-20', 3096),
('제13장_플랜트설비공사.md', '13-7-21', 3110),
('제13장_플랜트설비공사.md', '13-10-2', 3513),
('제13장_플랜트설비공사.md', '13-10-4', 3586)
]
print("=== Checking Ditot Sections in PDF ===")
for fname, sec, line in target_sections:
# Find page in PDF
found_pages = []
for p_num in range(len(doc)):
text = doc[p_num].get_text()
if sec in text:
found_pages.append(p_num)
print(f"\n[{fname}] Section {sec} (md line {line}) -> Found in PDF page(s): {[p+1 for p in found_pages]}")
for p in found_pages[:2]:
page = doc[p]
tabs = page.find_tables()
for t_idx, tab in enumerate(tabs):
df = tab.extract()
# print first 3 and last 2 rows
print(f" --- Table {t_idx} on Page {p+1} (rows: {len(df)}) ---")
for r in df[:5]:
print(f" {r}")
if len(df) > 5:
print(" ...")
for r in df[-2:]:
print(f" {r}")