LLM이나 AI 에이전트에게 문서에서 데이터를 추출하도록 요청하고, 답변이 붙여넣은 파일을 모델이 읽은 것이 아니라 문서 엔진에서 나오도록 할 수 있습니다. Docker 컨테이너에서 로컬로 실행되는 GroupDocs.Parser.Mcp 서버를 사용하면, 하나의 프롬프트로 텍스트, 표, 포함된 이미지 또는 바코드 값을 반환합니다:

invoice.pdf에 무엇이라고 적혀 있으며, 표에는 무엇이 있나요?

구성 및 문제 해결이 포함된 단계별 버전은 문서에 있습니다: AI 에이전트를 사용하여 MCP로 문서 데이터를 추출하는 방법.

AI 에이전트가 추출 도구가 필요한 이유는 무엇인가요?

채팅 모델은 컨텍스트 창에 들어간 내용만 알 수 있습니다. PDF를 채팅에 붙여넣으면 모델은 클라이언트가 평탄화한 텍스트를 기반으로 작업하므로 열이 무너지고, 스캔은 비어 보이며 두 경우 중 어느 것이 발생했는지 알 수 없습니다. 추출 서버는 이 단계를 모델 외부로 이동시킵니다: 에이전트가 도구를 호출하고, 문서 엔진이 컨테이너 내부의 파일을 읽으며, 에이전트가 결과를 받습니다. 모델은 전달받은 값에 대해 추론하는 데에 집중합니다.

GroupDocs.Parser.Mcp는 Claude Desktop, Claude Code, Cursor, GitHub Copilot이 포함된 VS Code 및 Windsurf와 같은 MCP 호환 클라이언트에 일곱 가지 도구를 제공합니다. 다섯 가지는 데이터를 추출하고(extract_text, extract_tables, extract_images, extract_barcodes, extract_metadata), 하나는 정보를 검사하며(get_document_info), 하나는 라이선스를 보고합니다(get_license_status).

방법 1: 값을 요청하고 에이전트가 도구를 선택하도록 하기

요청을 문서에 대한 질문 형태로 표현합니다. 에이전트가 질문을 도구에 매핑합니다.

당신이 묻는 내용 에이전트가 호출하는 도구
“무엇이라고 적혀 있나요?” extract_text
“표에는 무엇이 있나요?” extract_tables
“누가 작성했으며, 언제인가요?” extract_metadata
“그림을 저장하세요.” extract_images
“바코드가 무엇을 인코딩하고 있나요?” extract_barcodes

extract_text는 PDF, DOCX, XLSX, PPTX, TXT, HTML, CSV, EML, MSG, RTF, ODT, EPUB 등 50개 이상의 형식을 지원하므로 동일한 프롬프트가 이메일과 스프레드시트 모두에서 작동합니다. 매우 큰 출력은 마커로 잘리므로, 긴 보고서는 페이지별로 요청합니다:

이 40페이지 보고서의 텍스트를 페이지별로 추출하고 각 섹션을 요약하세요.

예시 세션 (축약):

사용자:    invoice.pdf에 무엇이라고 적혀 있으며, 표에는 무엇이 있나요?
에이전트:  [calls extract_text, extract_tables]
        2026-0412 인보이스, Northwind Supplies에서 발행, 날짜는 10월 3일.
        표에는 3개의 행이 있습니다 (항목, 수량, 금액); 금액의 합계는 1,240.00입니다.

방법 2: 빈 결과를 신뢰하기 전에 텍스트 레이어를 확인하기

디지털 원본 PDF는 텍스트 레이어를 가지고 있지만, 스캔은 그렇지 않습니다. 스캔된 페이지에서 extract_text는 거의 반환하지 않거나 전혀 반환하지 않으며, 이는 파일에 대한 올바른 설명입니다. 추출하기 전에 에이전트가 이를 테스트하도록 합니다:

이 문서는 몇 페이지이며, 추출 가능한 텍스트가 있나요?

get_document_info는 파일 이름, 유형, 페이지 수 및 크기를 수정 없이 반환하고, 한 페이지에 대한 extract_text 호출은 텍스트 존재 여부를 보여줍니다. 두 번의 저비용 호출로 “파일이 비어 있음”과 “파일이 이미지임”을 구분할 수 있습니다. 이 서버에는 OCR 단계가 없으므로 스캔된 이미지의 인쇄된 단어는 픽셀 그대로 남습니다. 바코드는 예외이며, 방법 3에서 다룹니다.

방법 3: 텍스트 추출이 도달하지 못하는 것을 끌어내기

표, 이미지 및 바코드마다 전용 도구가 있습니다. 이를 텍스트로 평탄화하면 유용한 정보를 잃게 됩니다.

  • extract_tables는 채팅에 표시되는 Markdown 표를 반환하거나, format: "json"을 전달하면 JSON 행을 반환합니다.
  • extract_images는 모든 포함된 이미지를 <basename>_image<N>.<ext> 형식으로 출력 폴더에 저장합니다.
  • extract_barcodes는 Code128, QR Code, PDF417, DataMatrix, EAN-13, EAN-8, UPC, Aztec 등 다양한 바코드를 디코딩하며, 스캔된 페이지에서도 엔진 모델이 래스터 이미지에서 코드를 감지하기 때문에 가능합니다.

invoice.pdf의 라인 아이템을 JSON으로 추출한 다음, 1페이지의 이미지를 저장하세요.

에이전트가 추출이 필요한가, 변환이 필요한가?

이 작업들은 서로 다른 역할이며, 잘못된 서버를 선택하면 혼란이 발생합니다.

원하는 작업 서버
문서에서 값 추출: 텍스트, 표, 바코드, 속성 GroupDocs.Parser.Mcp
문서를 다른 형식으로, 레이아웃을 유지하면서 GroupDocs.Conversion.Mcp
RAG를 위한 전체 문서의 정리된 Markdown GroupDocs.Markdown.Mcp
메타데이터를 편집하거나 제거 (읽기만이 아니라) GroupDocs.Metadata.Mcp

많은 파이프라인이 두 개의 서버를 사용합니다: 수집을 위한 변환, 추출을 위한 파싱.

Docker로 로컬 실행

이 서버는 Docker 이미지 형태로만 제공됩니다. 엔진에는 약 234 MB의 ONNX 모델이 포함되어 있어 NuGet 패키지가 250 MB 제한을 초과하므로 dnx 명령이 없습니다. 문서 폴더를 /data에 마운트합니다:

docker run --rm -i -v $(pwd)/documents:/data \
  ghcr.io/groupdocs-parser/parser-net-mcp:latest

AI 클라이언트는 stdio를 통해 컨테이너를 자식 프로세스로 시작합니다. 인바운드 포트가 없으며, 문서는 머신에 남아 있습니다. Claude Desktop, Claude Code, VS Code, Cursor, Windsurf, Cline 및 Codex에 대한 클라이언트별 구성은 AI 클라이언트에 등록에 있습니다.

제한 사항은 무엇인가요?

  • Evaluation mode. 라이선스 없이 추출이 제한되며, 정확한 제한은 라이브러리의 licensing page에 나와 있습니다. 에이전트에게 먼저 get_license_status를 실행하도록 요청하고, 비라이선스 출력은 완전한 읽기가 아니라 연기 테스트로 간주하십시오.
  • No OCR. 스캔된 이미지의 텍스트는 추출할 수 없습니다.
  • Docker only. Docker가 설치되어 있어야 하며, 이미지가 크기 때문에 한 번만 풀어두면 됩니다.

자주 묻는 질문

Claude를 로컬에서 사용해 PDF 텍스트를 추출할 수 있나요, 업로드 없이?
예. 서버가 머신의 컨테이너에서 실행되고 Claude Desktop이 stdio를 통해 통신하므로 파일은 마운트된 폴더에서 읽히고 추출 서비스로 전송되지 않습니다.

왜 일부 PDF에서 에이전트가 아무 것도 반환하지 않나요?
파일이 텍스트 레이어가 없는 스캔일 가능성이 높습니다. 에이전트에게 get_document_info와 한 페이지 extract_text 호출을 실행하도록 요청해 확인한 뒤, 코드가 필요하면 extract_barcodes를, 단어가 필요하면 OCR 도구를 사용하십시오.

GroupDocs.Parser.Mcp에 dnx 명령이 있나요?
아니요. 이 제품은 Docker 전용이므로 모든 설치는 docker run 또는 Docker를 실행하는 MCP 클라이언트 엔트리를 사용합니다.

더 깊이 들어가기