BaoThangAI / backend /app /tools /pdf_loader.py
TrungLC's picture
Initial commit - BaoThangAI
cb75c6a
Raw
History Blame Contribute Delete
1.2 kB
"""
MediGenius — tools/pdf_loader.py
PDF document loading and text splitting utilities.
"""
from typing import List
from langchain_core.documents import Document
from app.core.logging_config import logger
def load_pdf(pdf_path: str) -> List[Document]:
"""Load all pages from a PDF file using PyPDFLoader."""
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader(pdf_path)
docs = loader.load()
logger.info("Loaded %d pages from PDF: %s", len(docs), pdf_path)
return docs
def split_documents(docs: List[Document]) -> List[Document]:
"""Split documents into overlapping chunks using tiktoken-aware splitter."""
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
chunk_size=512,
chunk_overlap=128,
separators=["\n\n", ". ", "\n", " "],
)
splits = splitter.split_documents(docs)
logger.info("Split into %d chunks", len(splits))
return splits
def process_pdf(pdf_path: str) -> List[Document]:
"""Load a PDF and split it into chunks. Convenience wrapper."""
return split_documents(load_pdf(pdf_path))