MCPcopy Create free account
hub / github.com/NatsUIJM/autoContents / main

Function main

mainprogress/pdf_metadata_extractor.py:712–829  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

710
711 if not input_dir or not output_dir:
712 error_msg = "环境变量 PDF_METADATA_EXTRACTOR_INPUT 或 PDF_METADATA_EXTRACTOR_OUTPUT 未设置"
713 print(f"错误:{error_msg}")
714 write_log(error_msg)
715 sys.exit(1)
716
717 input_dir = os.path.abspath(input_dir)
718 output_dir = os.path.abspath(output_dir)
719
720 if not os.path.exists(input_dir):
721 error_msg = f"输入目录未找到,当前查找目录:{input_dir}"
722 print(f"错误:{error_msg}")
723 write_log(error_msg)
724 sys.exit(1)
725
726 pdf_files = [f for f in os.listdir(input_dir) if f.lower().endswith('.pdf')]
727 if len(pdf_files) != 1:
728 error_msg = f"输入目录中必须仅包含 1 个 PDF 文件,当前找到 {len(pdf_files)} 个。查找目录:{input_dir}"
729 print(f"错误:{error_msg}")
730 write_log(error_msg)
731 sys.exit(1)
732
733 pdf_filename = pdf_files[0]
734 pdf_path = os.path.join(input_dir, pdf_filename)
735
736 json_filename = os.path.splitext(pdf_filename)[0] + ".json"
737 json_path = os.path.join(output_dir, json_filename)
738 if not os.path.exists(json_path):
739 error_msg = f"目标 JSON 文件未找到,当前查找目录:{json_path}"
740 print(f"错误:{error_msg}")
741 write_log(error_msg)
742 sys.exit(1)
743
744 initial_data_dir = os.path.join(output_dir, "initial_data")
745 os.makedirs(initial_data_dir, exist_ok=True)
746 info_msg = f"中间数据将保存至:{initial_data_dir}"
747 print(f"[INFO] {info_msg}")
748 write_log(info_msg)
749
750 from llm_config import load_llm_config
751 try:
752 cfg = load_llm_config()
753 except Exception as e:
754 error_msg = f"LLM 配置加载失败:{e}"
755 print(f"错误:{error_msg}")
756 write_log(error_msg)
757 sys.exit(1)
758
759 api_key = cfg["api_key"]
760 base_url = cfg["base_url"]
761 model = cfg["model"]
762
763 client = AsyncOpenAI(api_key=api_key, base_url=base_url)
764
765 info_msg = f"开始处理 PDF: {pdf_filename}"
766 print(f"[INFO] {info_msg}")
767 write_log(info_msg)
768
769 # 传递 initial_data_dir 给 calculate_offset

Callers 1

Calls 5

get_api_keyFunction · 0.85
extract_book_nameFunction · 0.85
calculate_offsetFunction · 0.85
extract_toc_infoFunction · 0.85
write_logFunction · 0.70

Tested by

no test coverage detected