클라이언트 사이드 AI 툴 콜링으로 PDF 양식 자동 완성하기
웹 브라우저 내에서 작동하며 개인정보를 외부로 전송하지 않고 AI가 PDF 양식을 채우고 편집할 수 있는 'SimplePDF Copilot'이 공개되었습니다. 사용자가 원하는 LLM API 키(BYOK)를 연동하거나 로컬 환경에서 실행할 수 있어 의료 등 민감한 문서를 다루는 환경에서 활용도가 높습니다. LLM의 '툴 콜링(Tool Calling)' 기능을 브라우저 단에서 처리하는 것이 핵심 기술적 특징입니다.
안녕하세요 해커뉴스(HN) 여러분!
저는 PDF 편집기와 상호작용할 수 있는 AI 어시스턴트인 SimplePDF Copilot을 개발했습니다. 이 도구는 양식을 채워주고, 질문에 답하고, 특정 필드에 포커스를 맞추며, 필드를 추가하고, 페이지를 삭제하는 등의 다양한 작업을 수행할 수 있습니다.
이 프로젝트는 제가 7년 전에 시작하여 개인정보 보호를 중시하는 클라이언트 사이드(client-side) PDF 편집의 선구자 역할을 해온 SimplePDF를 기반으로 구축되었으며, 현재 월간 20만 명 이상이 사용하고 있습니다.
개인정보 보호 모델과 관련하여, PDF 파일 자체는 브라우저를 떠나지 않습니다. 파싱(parsing), 렌더링(rendering) 및 필드 감지 작업은 모두 클라이언트 사이드에서 실행됩니다.
모델에 필요한 텍스트(및 사용자의 메시지)는 사용자가 지정한 LLM으로 전송됩니다. 기본적으로 저희 데모 프록시(DeepSeek V4 Flash, 속도 제한 적용됨)를 사용하지만, 본인의 API 키를 직접 입력(BYOK)하여 다른 클라우드 제공업체를 사용하거나 완전한 로컬 환경(저는 LM Studio를 이용해 테스트했습니다)으로 실행할 수도 있습니다.
단순히 텍스트나 OCR 레이어만 검색하는 기존의 'PDF와 대화하기(Chat with PDF)' 도구들과 달리, Copilot은 PDF에 직접적인 액션을 취할 수 있습니다. 필드를 채우고 추가하며(클라이언트 사이드에서 Joe Barrow[1]의 CommonForms와 제가 추가한 후처리 휴리스틱을 사용하여 감지), 포커스를 맞추고, 페이지를 삭제하는 등의 작업이 가능합니다.
이 도구를 개발한 이유는 SimplePDF가 주로 문서 개인정보 보호가 절대적인 의료 고객층에서 많이 사용되는데, 제3자에게 개인 식별 정보(PII)를 넘겨야 하는 번거로움 없이 AI 경험을 제공하고 싶었기 때문입니다.
기술 스택은 꽤 표준적입니다:
- Tanstack Start
- Vercel의 AI SDK
- Tailwind (저는 개인적으로 CSS 모듈을 선호하고 올드스쿨이지만, 오픈소스화하는 것을 목표로 하기에 Tailwind가 더 적합할 것이라고 판단했습니다)
더 흥미로운 부분은 클라이언트 사이드 툴 콜링(tool calling)입니다. 이벤트는 iframe의 postMessage를 통해 양방향으로 전달됩니다.
'툴 콜링'과 '클라이언트 사이드 툴 콜링'에 익숙하지 않으신 분들을 위해 간단히 설명해 드리겠습니다:
툴 콜링은 LLM이 액션을 취하기 위해 사용하는 기능입니다. Claude가 grep이나 ls를 실행하거나 MCP 서버에 접근할 때, 이것들이 바로 툴 콜(도구 호출)입니다.
클라이언트 사이드 툴 콜링은 도구를 호출하려는 '의도'는 LLM에서 나오지만, 실제 '실행'은 브라우저 내부에서 이루어진다는 것을 의미합니다.
이러한 방식은 다음과 같은 이유로 매우 중요합니다: 압도적인 속도(speed, yo)