test_debug.py
Ricky/RAG_project/test_debug.py
# test_debug.py
from processors.pdf_processor import process_pdfs
from processors.image_processor import process_images
print("=" * 60)
print("🔍 第一步:檢查 PDF 提取結果")
print("=" * 60)
pdf_docs = process_pdfs()
if len(pdf_docs) == 0:
print("❌ 完全無提取到任何 PDF 內容!")
else:
for doc in pdf_docs:
source = doc.metadata.get('source', 'unknown')
content = doc.page_content.strip()
length = len(content)
print(f"\n📄 檔案: {source}")
print(f" 字元數: {length}")
if length < 10:
print(f" ❌ 幾乎空白!呢個 PDF 可能係掃描圖片版")
elif length < 50:
print(f" ⚠️ 內容極少,可能提取唔完整")
else:
print(f" ✅ 有內容")
# 顯示前 200 個字元
preview = content[:200] if content else "(空白)"
print(f" 預覽: {preview}")
print("-" * 40)
print(f"\n📊 PDF 總共產生 {len(pdf_docs)} 個 chunks")
print("\n" + "=" * 60)
print("🔍 第二步:檢查圖片提取結果")
print("=" * 60)
try:
img_docs = process_images()
if len(img_docs) == 0:
print("❌ 完全無提取到任何圖片內容!")
else:
for doc in img_docs:
source = doc.metadata.get('source', 'unknown')
content = doc.page_content.strip()
length = len(content)
print(f"\n🖼️ 圖片: {source}")
print(f" 字元數: {length}")
if length < 10:
print(f" ❌ 幾乎空白!OCR 提取失敗")
else:
print(f" ✅ 有內容")
preview = content[:200] if content else "(空白)"
print(f" 預覽: {preview}")
print("-" * 40)
print(f"\n📊 圖片總共產生 {len(img_docs)} 個 documents")
except Exception as e:
print(f"❌ 圖片處理出錯: {e}")
print("\n" + "=" * 60)
print("📋 診斷總結")
print("=" * 60)
print(f"PDF chunks 數量: {len(pdf_docs)}")
# 統計有幾多個 chunk 係空白或太短
empty_chunks = [d for d in pdf_docs if len(d.page_content.strip()) < 10]
short_chunks = [d for d in pdf_docs if 10 <= len(d.page_content.strip()) < 50]
good_chunks = [d for d in pdf_docs if len(d.page_content.strip()) >= 50]
print(f" ❌ 空白/極短 (< 10字): {len(empty_chunks)} 個")
print(f" ⚠️ 太短 (10-50字): {len(short_chunks)} 個")
print(f" ✅ 正常 (> 50字): {len(good_chunks)} 個")
if len(empty_chunks) > len(good_chunks):
print("\n🚨 結論: 大部分 PDF 提取失敗!")
print(" 你嘅 PDF 好大機會係掃描圖片版")
print(" 需要改用 OCR 方案 (pytesseract + pdf2image)")
elif len(good_chunks) > 0:
print("\n✅ 結論: PDF 提取基本正常")
print(" 問題可能在 chunk 切割或搜索策略")
else:
print("\n⚠️ 結論: 需要進一步檢查")
相关文章
__init__.py
__init__.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/__init__.py).
阅读文章 →auth.py
auth.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/admin/auth.py).
阅读文章 →routes.py
routes.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/admin/routes.py).
阅读文章 →config.py
config.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/config.py).
阅读文章 →admin_ingest.py
admin_ingest.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/routes/admin_ingest.py).
阅读文章 →admin_stats.py
admin_stats.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/routes/admin_stats.py).
阅读文章 →