MCPcopy Create free account
hub / github.com/917Dhj/DeepPaperNote / main

Function main

scripts/extract_pdf_assets.py:1156–1235  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1154
1155
1156def main() -> None:
1157 args = parser().parse_args()
1158 record = ensure_record(args.input)
1159 pdf_path = Path(str(record.get("pdf_path", "")).strip()).expanduser()
1160 if not pdf_path.exists():
1161 from_fetch = maybe_load_json_record(args.input) or {}
1162 pdf_candidate = str(from_fetch.get("pdf_path", "")).strip()
1163 if pdf_candidate:
1164 pdf_path = Path(pdf_candidate).expanduser()
1165 if not pdf_path.exists():
1166 raise SystemExit("extract_pdf_assets.py requires a resolvable local PDF path.")
1167 if fitz is None:
1168 raise SystemExit("extract_pdf_assets.py requires PyMuPDF (`fitz`).")
1169
1170 asset_root = Path(args.assets_dir).expanduser().resolve() if args.assets_dir else default_assets_dir(record)
1171 images_dir = asset_root / "images"
1172 images_dir.mkdir(parents=True, exist_ok=True)
1173
1174 figure_dpi = args.figure_dpi
1175
1176 doc = fitz.open(pdf_path.resolve())
1177 page_records: list[dict] = []
1178 image_assets: list[dict] = []
1179 figure_assets: list[dict] = []
1180 asset_coverage: dict = {}
1181 try:
1182 total_pages = len(doc)
1183 page_limit = min(total_pages, args.max_pages)
1184 asset_coverage = {
1185 "total_pages": total_pages,
1186 "asset_max_pages": args.max_pages,
1187 "asset_pages_scanned": page_limit,
1188 "truncated_due_to_asset_page_limit": total_pages > args.max_pages,
1189 }
1190 for idx in range(page_limit):
1191 page = doc[idx]
1192 page_number = idx + 1
1193 text = normalize_whitespace(page.get_text("text"))
1194 searchable_chars = len(text)
1195 extraction_method = "text" if searchable_chars >= args.min_searchable_chars else "none"
1196 ocr_text = ""
1197 if extraction_method == "none":
1198 ocr_text = ocr_page(page, args.ocr_dpi)
1199 if ocr_text:
1200 extraction_method = "ocr"
1201 page_images = extract_page_images(doc, page, page_number, images_dir)
1202 image_assets.extend(page_images)
1203
1204 page_figures = extract_figure_regions(page, page_number, images_dir, dpi=figure_dpi)
1205 figure_assets.extend(page_figures)
1206
1207 page_records.append(
1208 {
1209 "page_number": page_number,
1210 "searchable_text_chars": searchable_chars,
1211 "text_extraction_method": extraction_method,
1212 "ocr_used": extraction_method == "ocr",
1213 "image_count": len(page_images),

Callers 1

Calls 12

maybe_load_json_recordFunction · 0.90
default_assets_dirFunction · 0.90
normalize_whitespaceFunction · 0.90
emitFunction · 0.90
ocr_pageFunction · 0.85
extract_page_imagesFunction · 0.85
extract_figure_regionsFunction · 0.85
parserFunction · 0.70
ensure_recordFunction · 0.70
openMethod · 0.45
get_textMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected