()
| 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 |
no test coverage detected