Spaces:
Runtime error
Runtime error
| import os | |
| from langchain_community.document_loaders import PyPDFLoader, TextLoader | |
| from langchain_core.documents import Document | |
| def load_documents(source_dir: str) -> list[Document]: | |
| documents = [] | |
| for root, _, files in os.walk(source_dir): | |
| for file in files: | |
| file_path = os.path.join(root, file) | |
| ext = os.path.splitext(file)[1].lower() | |
| try: | |
| if ext == '.pdf': | |
| loader = PyPDFLoader(file_path) | |
| docs = loader.load() | |
| for i, doc in enumerate(docs): | |
| doc.metadata['source_file'] = file_path | |
| doc.metadata['document_type'] = 'pdf' | |
| doc.metadata['page_number'] = doc.metadata.get('page', i + 1) | |
| documents.extend(docs) | |
| elif ext in ['.md', '.txt']: | |
| loader = TextLoader(file_path) | |
| docs = loader.load() | |
| for doc in docs: | |
| doc.metadata['source_file'] = file_path | |
| doc.metadata['document_type'] = 'markdown' if ext == '.md' else 'text' | |
| doc.metadata['page_number'] = 1 | |
| documents.extend(docs) | |
| else: | |
| # not a supported format, skip | |
| continue | |
| except Exception as e: | |
| print(f"Failed to load {file_path}: {e}") | |
| return documents | |