영어 원본:
SKILL.en.md
doc — 문서 처리 (PDF/DOCX/XLSX)
경량 스킬, 자체 코드 없음: references/doc-recipes.md의 레시피에 따라 로컬 CLI(pdftotext, tesseract, qpdf, pdftk, docling, libreoffice)로 라우팅합니다.
입력 유형별 라우팅 표
file <f>로 유형을 식별하고 1페이지를 열어 확인합니다.
| 입력 + 필요 사항 | 주 명령어 | 비고 |
|---|---|---|
| 텍스트 레이어가 있는 PDF, 텍스트 추출 | pdftotext -layout | §1 |
| 스캔/이미지 PDF, 텍스트 추출 | OCR pdftoppm + tesseract | §1 |
| 복잡한 PDF/DOCX (표, 레이아웃) → 마크다운/JSON | 스킬 docling 공식 (fetch --skill docling), fallback docling convert --to md | §1 — PDF 5페이지 초과: --page-range, 타임아웃 180 |
| XLSX → CSV/마크다운 | libreoffice headless | §1 |
| PDF 페이지 접기/분할/회전/추출 | qpdf/pdftk + pdfinfo/pdftoppm | §2 |
| 양면/흐릿한 파일, 빠른 프로브 필요 | 스킬 inspect (mediaskills) | uv run <inspect>/scripts/probe.py |
| 방금 추출한 출력 검증 | pdfinfo + pdftotext | §4 — 페이지 수 일치, 텍스트 비어 있지 않음 |
규칙
- 입력 언어 알림 — 사용자가 사용하는 언어로 응답합니다.
- 출력은 원본 파일 옆에 배치:
<원본_이름>.extract.md|.txt|.csv. 원본 파일을 덮어쓰지 않습니다. - 스캔 이미지에서 추출한 경우 출처 레이블:
[ocr]표시 — 관찰된 내용과 혼합하지 않습니다. - 전달 전 확인: PDF 페이지 수가 충분한지(
pdfinfo), 추출된 텍스트가 페이지와 일치하는지(pdftotext) 확인; 부족/비어 있음 → 다시 추출. - 로컬 우선: 처리 명령은 머신에서 실행됨; 오프라인 기능은 CLI, OCR/Docling 모델 및 필요한 데이터가 설치 또는 캐시되어 있는지에 따라 달라집니다. Docling을 처음 사용할 때는 모델 다운로드가 필요할 수 있습니다. 타사 스킬을 가져오는 데에도 네트워크가 필요합니다. 모델/도구가 없으면 명확히 알리거나 다른 로컬 레시피를 선택하십시오 — 오프라인 처리가 완료되었다고 확인하지 마십시오.
- 출력을 기록한 후 기록된 파일(이름 + 경로)을 보고합니다 — 조용히 넘어가지 않습니다.
타사 스킬 (세션별 가져오기)
docling공식 스킬 (docling-project): CLI + Python SDK, PipelineOptions, OCR 구성, DoclingDocument JSON/마크다운 — §1의docling convertCLI보다 더 깊이 있습니다.- 세션별 로드:
./scripts/fetch-session.sh --skill docling→ 임시, 영구 설치되지 않음. - 네트워크 없음 / 가져올 수 없음: 기존 CLI 레시피 사용.
docling convert --to md는 필요한 모델이 이미 캐시에 있는 경우에만 오프라인 가능; 그렇지 않으면 다른 방법을 선택하거나 의존성을 명확히 알립니다.
참조
references/doc-recipes.md— §1 추출 (PDF/OCR/docling/DOCX/XLSX), §2 PDF 변환, §3 출력 기록, §4paper스킬을 위한 DOCX 출력.