Zeri00/Cogni-Chat-document-reader-v2
1
1import os2import sys3 4print("CogniChat Dependencies & PDF Handling Test")5 6# Test imports7try:8 print("\nTesting core imports...")9 from langchain_community.embeddings import HuggingFaceEmbeddings10 from langchain_community.retrievers import BM25Retriever11 from langchain.text_splitter import RecursiveCharacterTextSplitter12 from langchain_core.documents import Document13 print("Core LangChain imports successful!")14 15except ImportError as e:16 print(f"Import error: {e}")17 if "rank_bm25" in str(e):18 print("Missing dependency: pip install rank-bm25==0.2.2")19 sys.exit(1)20try:21 print("\nTesting PDF loading capabilities...")22 try:23 from langchain_community.document_loaders import PyPDFLoader24 print("PyPDFLoader available")25 except ImportError:26 print("PyPDFLoader not available")27 28 try:29 import fitz30 print("PyMuPDF (fitz) available - can handle corrupted PDFs")31 except ImportError:32 print("PyMuPDF (fitz) not available")33 34 try:35 import pdfplumber36 print("pdfplumber available - additional PDF parsing method")37 except ImportError:38 print("pdfplumber not available")39 40except Exception as e:41 print(f"Error testing PDF capabilities: {e}")42try:43 print("\nTesting BM25 Retriever...")44 45 test_docs = [46 Document(page_content="This is the first test document about machine learning."),47 Document(page_content="This is the second document discussing natural language processing."),48 Document(page_content="The third document covers artificial intelligence topics."),49 ]50 51 bm25_retriever = BM25Retriever.from_documents(test_docs)52 bm25_retriever.k = 253 query = "machine learning"54 results = bm25_retriever.get_relevant_documents(query)55 print(f"BM25 retriever created and tested successfully!")56 print(f"Retrieved {len(results)} documents for query: '{query}'")57 58except Exception as e:59 print(f"✗ Error testing BM25 retriever: {e}")60 import traceback61 traceback.print_exc()62 sys.exit(1)63 64print("\nAll tests completed successfully!")65print("\nThe application should now handle:")66print(" • Regular file uploads and processing")67print(" • Corrupted PDF files with multiple fallback methods")68print(" • BM25 and FAISS hybrid retrieval")69print(" • Proper error messages for failed file processing")70print("\nMake sure to install all dependencies with:")71print(" pip install -r requirements.txt")72 73print("\nKey Dependencies Added/Updated")74print(" • rank-bm25==0.2.2 (for BM25 retrieval)")75print(" • pymupdf==1.23.26 (PDF fallback method)")76print(" • pdfplumber==0.10.3 (additional PDF parsing)")