diff --git a/troubleshooting/251022_claude_OCR_파이프라인_개선_테스트.md b/troubleshooting/251022_claude_OCR_파이프라인_개선_테스트.md new file mode 100644 index 0000000..cf06c53 --- /dev/null +++ b/troubleshooting/251022_claude_OCR_파이프라인_개선_테스트.md @@ -0,0 +1,60 @@ +# OCR 파이프라인 개선 테스트 (ko+eng PDF) + +- 일시(KST): 2025-10-22 22:30–23:00 +- 작성자: Claude (51124) +- 대상: rb8001 + skill-rag-file (RAG 파일 서비스) + +--- + +## 배경/문제 +- NAVER WORKS에서 수신된 이미지 위주 IR PDF가 텍스트 추출 품질이 낮아, RAG 질의(사업분야/매출/팀규모 등) 결과가 미검출(0건)로 이어짐. +- 예시 파일: WORKVISA_IR(2025.10.14).pdf → document_id=611938b0-0cbf-4f32-8765-ffabb90a85b0 + +## 환경/사전 조건 +- 저장 위치: `/mnt/51123data/documents//YYYY-MM/.pdf` + - 실제 경로: `/mnt/51123data/documents/79441171-3951-4870-beb8-916d07fe8be5/2025-10/611938b0-0cbf-4f32-8765-ffabb90a85b0.pdf` +- 스토리지/임베딩: skill-rag-file 컨테이너(8508) + ChromaDB(내부) + +## 재현 절차 및 결과 +1) 텍스트 확인(API) + - `GET http://localhost:8508/api/text/611938b0-...` + - 결과: chunk_count=4, length≈3226, unique_chars=103, garbage_ratio=0.009, `ocr_used`: 초기 False → 재색인 후 True + - 본문은 난독 텍스트가 다수(스캔 이미지/비표준 폰트 추정) + +2) 재색인(OCR 강제) + - `POST /api/reindex {"document_id": "611938b0-...", "force_ocr": true}` + - 결과: `ocr_used: true`, 청크 수 4 그대로(품질 지표 유사) + +3) RAG 질의 테스트 + - IR 지표 질의(사업 분야/성장률/팀 구성 등): 대부분 0건(문장 구조/키워드 부재) + - 식별 키워드 질의(예: "workvisa", "Team Building"): 해당 문서 포함해 검색됨(단, 의미 문장 근거는 빈약) + +## 분석 +- 파일은 PDF 내부에 텍스트 레이어가 거의 없고 이미지(XObject) 위주. +- 현재 강제 OCR(추출 품질 휴리스틱 기반) 수행해도 의미 문장 수준으로 복원되지 않아 IR 질의가 실패. +- 인덱싱 타이밍: 09:06:02 청킹/임베딩 완료 직후 09:06:03 검색 수행(로그 근거) → “인덱싱/OCR 전 검색”은 아님. + +## 권장 개선(코드 변경은 별도 PR) +1) OCR 엔진/옵션 고도화 + - ocrmypdf+Tesseract(ko+eng)로 강제 OCR, 데스큐/회전/해상도(300–600DPI) 표준화. + - PaddleOCR(PP-OCRv4) angle classifier 적용(표/도형/한글 자모 분리·잡음 보정 강화). + +2) 품질 휴리스틱 상향 및 폴백 + - `garbage_ratio/unique_chars/length` 임계 재조정, OCR 우선 적용 범위 확대. + - RAG 미검출 시 `/api/text` 요약 폴백(질의→요약→추출)로 최소 정보 확보. + +3) 클라우드 OCR 조건부 폴백(선택) + - Google Vision/NAVER CLOVA/AWS Textract를 저품질 페이지에만 호출(캐시/레이트리밋/비용 상한 포함). + +## 검증 포인트(배포 후) +- 동일 문서 재업로드/재색인 시 IR 질의 최소 2개 항목 이상 근거 텍스트 반환. +- `/api/text` 품질 메타(garbage_ratio↓, unique_chars↑) 개선 확인. +- 검색 스니펫이 숫자/표만이 아닌 자연어 문장 포함. + +## 교훈 ✍️ +- 스캔 기반 한국어 PDF는 단일 OCR로 품질 확보가 어려워, 다단계 하이브리드(OCR 옵션→딥러닝 OCR→클라우드 폴백) 설계가 필요. +- RAG 미검출 시 요약 폴백 경로를 두어 사용자 응답 공백을 줄여야 함. +- 업로드→인덱싱→검색 파이프라인은 상태 확인(청크 수/컬렉션 존재) 후 검색 실행이 안정적. + +--- +문서 규칙: `DOCS/300_architecture/312_문서_작성_원칙.md` 준수