pdf_parser.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from io import BytesIO
  2. from PyPDF2 import PdfReader
  3. import sys, os
  4. sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  5. from parser.document_parser import DocumentParser
  6. from logger.logging import setup_logging
  7. logger = setup_logging()
  8. class PDFParser(DocumentParser):
  9. """PDF文档解析器"""
  10. def parse(self, data: bytes) -> str:
  11. """解析PDF文档"""
  12. try:
  13. reader = PdfReader(BytesIO(data))
  14. text_content = ""
  15. for page_num in range(len(reader.pages)):
  16. page = reader.pages[page_num]
  17. page_text = page.extract_text()
  18. if page_text:
  19. text_content += page_text + "\n"
  20. return text_content.strip()
  21. except Exception as e:
  22. logger.error(f"PDF解析失败: {e}")
  23. return ""
  24. def supports(self, content_type: str) -> bool:
  25. """检查是否支持PDF"""
  26. return content_type.lower() in ['application/pdf', 'pdf']
  27. if __name__ == "__main__":
  28. parser = PDFParser()
  29. file_path = ["../data/pdf1.pdf", "../data/pdf2.pdf", "../data/pdf3.pdf", "../data/pdf4.pdf"]
  30. for path in file_path:
  31. with open(path, "rb") as f:
  32. data = f.read()
  33. result = parser.parse(data)
  34. print("\n\n")
  35. print(f"################# 文件路径: {path} #################")
  36. print(result)