docs: reflect current OCR fallback with quality heuristics; augment troubleshooting with OCR step and quality metrics

This commit is contained in:
Claude-51124 2025-10-21 23:55:04 +09:00
parent 76f4da4d97
commit f9342c8279
2 changed files with 10 additions and 3 deletions

View File

@ -12,7 +12,10 @@
- 운영 표준: `/healthz` 헬스체크 일관화(main.py/Dockerfile/compose/workflows), 로그 30일 롤링(`/mnt/hdd/logs/`) - 운영 표준: `/healthz` 헬스체크 일관화(main.py/Dockerfile/compose/workflows), 로그 30일 롤링(`/mnt/hdd/logs/`)
## 1) 아키텍처 개요 ## 1) 아키텍처 개요
- 흐름: 업로드 → (PDF/이미지 분기) → skill-ocr HTTP 호출 → 텍스트/블록/메타 → RAG(ChromaDB) 저장 → 응답 - 흐름(현재 적용 상태): 업로드 → (PDF/이미지 분기)
1) skill-rag-file 내장 추출(PyPDF2 등) 시도 → 품질 휴리스틱 검사(len, garbage_ratio, unique_chars)
2) 품질이 낮으면 강제 OCR(pytesseract+pdf2image) 재추출 → RAG(ChromaDB) 저장 → 응답
3) LangGraph: 업로드 실패/저품질 감지 시 안전 파일명 재시도 및 스니펫 주입
- 컴포넌트 - 컴포넌트
- rb*: 클라이언트 요청 처리, 파일 유형 판별, skill-ocr 호출만 담당 - rb*: 클라이언트 요청 처리, 파일 유형 판별, skill-ocr 호출만 담당
- skill-ocr(8506): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등) - skill-ocr(8506): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등)
@ -20,7 +23,8 @@
- Vector DB: ChromaDB(텍스트 조각) + PostgreSQL(메타) - Vector DB: ChromaDB(텍스트 조각) + PostgreSQL(메타)
## 2) 1단계 — MVP(즉시) ## 2) 1단계 — MVP(즉시)
- PDF: OCRmyPDF + Tesseract 5(kor+eng) - PDF: OCRmyPDF + Tesseract 5(kor+eng) (로드맵)
- 현재: skill-rag-file 내장 pytesseract OCR 폴백 + 품질 휴리스틱으로 강제 전환 적용
- 장점: 자동 전처리(회전/디스큐/노이즈), 검색가능 PDF 생성, 안정/단순 - 장점: 자동 전처리(회전/디스큐/노이즈), 검색가능 PDF 생성, 안정/단순
- 권장 옵션: `--rotate-pages --deskew --optimize 3 --jobs N` - 권장 옵션: `--rotate-pages --deskew --optimize 3 --jobs N`
- 이미지/모바일: PaddleOCR(PP-OCR 계열, det+cls+rec_korean) - 이미지/모바일: PaddleOCR(PP-OCR 계열, det+cls+rec_korean)

View File

@ -32,6 +32,8 @@
- 파일: `rb8001/app/router/slack_handler.py` - 파일: `rb8001/app/router/slack_handler.py`
- 스레드별 문서 고정: `thread_ts → {team_id, document_ids}` 캐시 저장, 후속 질의 RAG 검색 결과를 해당 문서로 제한. - 스레드별 문서 고정: `thread_ts → {team_id, document_ids}` 캐시 저장, 후속 질의 RAG 검색 결과를 해당 문서로 제한.
- 파일: `rb8001/app/router/thread_doc_cache.py`, `rb8001/app/router/slack_handler.py` - 파일: `rb8001/app/router/thread_doc_cache.py`, `rb8001/app/router/slack_handler.py`
- PDF 추출 품질 개선: 품질 휴리스틱(len, garbage_ratio, unique_chars)로 저품질 텍스트 시 강제 OCR(pytesseract) 후 재청킹/인덱싱, 메타 기록(ocr_used, quality)
- 파일: `skill-rag-file/app/api/upload.py`, `skill-rag-file/app/services/text_extractor.py`
- (선행) 윤리 노출/모델 고정/메모리 위생: - (선행) 윤리 노출/모델 고정/메모리 위생:
- 윤리 설명 사용자 비노출, 공정성 오탐 감소, 정적 대안 제거. - 윤리 설명 사용자 비노출, 공정성 오탐 감소, 정적 대안 제거.
- `gemini-2.5-flash-lite` 단일 모델 고정 및 중복 초기화 제거. - `gemini-2.5-flash-lite` 단일 모델 고정 및 중복 초기화 제거.
@ -44,7 +46,8 @@
1) PDF 첨부 DM 테스트 1) PDF 첨부 DM 테스트
- 기대 로그 흐름: - 기대 로그 흐름:
- “파일 분석 중…” → “로빙 중…” 진행 메시지 표시 - “파일 분석 중…” → “로빙 중…” 진행 메시지 표시
- LangGraph 업로드/인덱싱 완료 후 `[Graph] Injected … snippet(s)` 로그 - LangGraph 업로드/인덱싱 완료 후 `[Graph] Injected … snippet(s)` 로그
- PDF 저품질 케이스: 업로드 로그에 `ocr_used: true`, `quality.garbage_ratio` 개선 확인
- Router result의 content가 문서 스니펫 기반 분석으로 생성 - Router result의 content가 문서 스니펫 기반 분석으로 생성
2) 비텍스트/변경 이벤트 무시 확인 2) 비텍스트/변경 이벤트 무시 확인