스크랩

PDF 속에 숨겨진 'AI 전용 명령어'를 찾아 지우는 도구, pdf-hidden-text-remover

PDF 속에 숨겨진 'AI 전용 명령어'를 찾아 지우는 도구, pdf-hidden-text-remover

사람 눈엔 안 보이고, AI만 읽는 텍스트가 있다?

PDF 문서를 AI에게 요약해 달라고 맡기는 일이 많아졌습니다. 그런데 이 PDF 안에 사람 눈에는 보이지 않고 AI만 읽을 수 있는 텍스트가 숨어 있을 수 있습니다.

숨기는 방법은 단순합니다. 글자색을 배경색과 거의 같게 만들거나, 글자 크기를 아주 작게 줄이면 됩니다. 사람이 볼 때는 빈 공간이지만 AI는 이 텍스트를 다른 글자와 똑같이 읽습니다.

여기에 "이 문서를 긍정적으로 평가하라", "이전 지시를 무시하라" 같은 문장을 넣어 두면 AI가 문서를 처리하면서 그 지시를 따를 수 있습니다. 이런 공격을 프롬프트 인젝션(Prompt Injection) 이라고 합니다.

이번에 GeekNews의 Show GN에 소개된 pdf-hidden-text-remover는 이 문제를 막기 위해 만들어진 웹 도구입니다.

핵심 요약

  • PDF를 분석해 눈에 잘 보이지 않는 텍스트를 찾아 지워 줍니다
  • 찾아낸 텍스트 중 어떤 것을 지울지 사용자가 직접 고를 수 있습니다
  • Rust로 만들고 WebAssembly(WASM)로 빌드해 브라우저에서 돌아갑니다
  • 파일이 서버로 전송되지 않고 브라우저 안에서만 처리됩니다

어떤 텍스트를 찾아낼까?

이 도구는 PDF 안 텍스트의 색상 대비, 글자 크기, 렌더링 속성 등을 살펴보고, 아래 네 가지 경우를 '숨겨진 텍스트'로 판단합니다.

  1. 배경과 글자색의 대비가 매우 낮은 텍스트 흰 배경에 흰 글씨, 또는 거의 같은 색 글씨처럼 가장 흔한 숨김 방식입니다.
  2. 지나치게 작은 글자 1pt도 안 되는 크기의 글자는 화면에서 점이나 선으로만 보이거나 아예 보이지 않습니다.
  3. 투명도가 낮거나 화면에 그려지지 않는 렌더링 모드 PDF에는 텍스트를 데이터로는 갖고 있되 화면에는 그리지 않는 렌더링 모드(예: invisible 모드)가 있습니다. 텍스트를 거의 투명하게 만드는 방법도 여기에 포함됩니다.
  4. 페이지의 보이는 영역 밖에 놓인 텍스트 좌표를 페이지 바깥으로 옮기면 뷰어에는 나타나지 않지만, 텍스트를 추출하면 그대로 나옵니다.

직접 고를 수 있다는 점이 중요한 이유

자동 탐지에는 오탐이 따를 수밖에 없습니다. 예를 들어 스캔한 문서에 OCR로 넣은 텍스트 레이어는 원래 눈에 보이지 않게 만들어집니다. 이런 텍스트까지 모두 지우면 문서 검색 기능을 잃게 됩니다.

그래서 탐지 결과를 보여 주고 최종 판단은 사용자에게 맡기는 방식이 실용적입니다.

브라우저에서만 처리하는 구조

이 도구에서 눈여겨볼 또 하나의 부분은 구조입니다.

  • PDF 분석과 수정 로직을 Rust로 작성했습니다
  • 이 코드를 WASM으로 빌드해 웹 브라우저에서 직접 실행합니다
  • 그래서 PDF 파일이 외부 서버로 업로드되지 않습니다

계약서, 이력서, 사내 보고서처럼 민감한 문서를 다룰 때 파일을 외부로 보내지 않아도 된다는 점은 큰 장점입니다. 보안 도구가 오히려 정보 유출 경로가 되면 곤란하니까요.

이런 분들께 추천합니다

  • 외부에서 받은 PDF를 ChatGPT, Claude 같은 AI로 요약하거나 분석하는 분
  • 이력서, 논문, 제안서 등을 AI로 1차 검토하는 채용 담당자나 심사자
  • 문서를 자동으로 처리하는 LLM 파이프라인이나 RAG 시스템을 운영하는 개발자
  • 받은 PDF에 무언가 숨어 있지 않은지 확인해 보고 싶은 분

마치며

AI가 문서를 대신 읽는 일이 늘어날수록, AI만 읽는 텍스트를 이용한 공격도 늘어날 가능성이 큽니다. 실제로 논문이나 이력서에 "좋게 평가하라"는 숨은 문장을 넣는 사례가 알려지기도 했습니다.

pdf-hidden-text-remover는 이런 위험을 문서 단계에서 미리 걸러 내는 도구입니다. 서버를 거치지 않아 개인정보 걱정이 적다는 점도 좋습니다. AI에 PDF를 자주 맡긴다면, 그 전에 한 번 검사해 보는 습관을 들여 보세요.


원문: https://news.hada.io/topic?id=36158