| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from io import BytesIO
- from PyPDF2 import PdfReader
- import sys, os
- sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- from parser.document_parser import DocumentParser
- from logger.logging import setup_logging
- logger = setup_logging()
- class PDFParser(DocumentParser):
- """PDF文档解析器"""
-
- def parse(self, data: bytes) -> str:
- """解析PDF文档"""
- try:
- reader = PdfReader(BytesIO(data))
- text_content = ""
-
- for page_num in range(len(reader.pages)):
- page = reader.pages[page_num]
- page_text = page.extract_text()
- if page_text:
- text_content += page_text + "\n"
-
- return text_content.strip()
-
- except Exception as e:
- logger.error(f"PDF解析失败: {e}")
- return ""
-
- def supports(self, content_type: str) -> bool:
- """检查是否支持PDF"""
- return content_type.lower() in ['application/pdf', 'pdf']
- if __name__ == "__main__":
- parser = PDFParser()
- file_path = ["../data/pdf1.pdf", "../data/pdf2.pdf", "../data/pdf3.pdf", "../data/pdf4.pdf"]
- for path in file_path:
- with open(path, "rb") as f:
- data = f.read()
- result = parser.parse(data)
- print("\n\n")
- print(f"################# 文件路径: {path} #################")
- print(result)
|