영어 논문을 한국어 대역 리더로 변환합니다. PDF나 arXiv 링크를 넣으면 원문과 번역을 한 문단씩 나란히 보여 주고 핵심·결과·한계를 짚는 맥락 주석을 달아 줍니다. 읽다가 막히는 문장은 바로 AI에게 물어볼 수 있습니다.
Windows 10/11 데스크톱 앱이며, 논문과 번역은 모두 내 PC에만 저장됩니다. macOS 14 이상 Apple Silicon용 베타 빌드 경로도 추가했습니다. 맥 버전은 실기기 검증 전이며, 준비·빌드·배포 조건은 macOS 안내를 참고하세요.
최신 버전: 0.10.2. PDF·arXiv에서 그림·표·수식과 원문을 더 충실하게 가져오고, 기존 논문을 검토하는 원문 다시 분석·누락 진단·원문 대조를 추가했습니다. 스캔 페이지는 영어·한국어 OCR로 글자를 읽고 필요한 결과만 반영할 수 있습니다. 자세한 내용은 0.10.2 릴리스 노트, 이전 변경 사항은 전체 릴리스에서 확인하세요.
- 연속 스크롤 읽기: 본문을 세로로 쭉 스크롤해서 읽습니다. 원문 · 대역 · 번역(
Ctrl+1/2/3), 본문 검색(Ctrl+F)을 지원하며 목차는 메뉴 버튼으로 여닫으며, 항목 이동이나 본문 클릭 중에도 펼친 상태를 유지합니다. 상단 읽기 설정에서 글자 크기와 라이트/다크를 바꾸면 서재와 보조 창에도 같은 테마를 적용합니다. 읽던 위치는 자동으로 저장됩니다. - 서재: 마지막으로 읽던 논문을 바로 여는 이어서 읽기, 제목 검색과 정렬(최근 읽은 순·추가한 순·제목 순), 최대 14편씩 책장에 표시, 논문별 처리 상태 표시, 화면 어디에나 PDF를 끌어 놓아 가져오기, 논문 삭제
- 플로팅 도구: 하단의 Ask AI와 메모장은 이동·크기 조절이 가능한 창으로 열립니다. 메모는 논문마다 따로 저장하며, 작성 중인 초안도 이 PC에 임시 보관합니다.
- 전문 번역: 용어집을 먼저 만든 뒤 논문 전체를 일관된 용어로 번역합니다. 참고문헌은 원문을 유지합니다.
- 절약 모드: 급하지 않은 논문은 제공자의 일괄 처리(Batch API)로 맡겨 토큰 요금을 50% 아낍니다. 보통 1시간 안에, 늦어도 24시간 안에 끝나며 앱을 꺼 두어도 됩니다.
- 표·수식 복원: 병합 셀이 있는 표와 LaTeX 수식을 복원하고 원본 PDF 조각과 비교해 볼 수 있습니다.
- 맥락 주석: 핵심 아이디어·결과·한계·통찰·방법·용어의 6가지 색 주석. 카드마다 접었다 펼 수 있습니다.
- AI에게 질문: 문장을 선택하고
Ctrl+K로 질문하거나 쉽게 설명·요약을 요청합니다. 답변의 수식은 LaTeX로 렌더링되어 바로 읽을 수 있고, 주석이나 메모로 저장할 수 있습니다. - 논문 요약·흐름 정리: 리더의 ‘요약’ 탭에서 문제·기존 한계·제안 방법·핵심 결과·한계와 섹션 흐름, 핵심 그림·표를 만듭니다. 항목마다 근거 블록으로 이동하고, 직접 고치거나 메모·질문으로 이어 갈 수 있습니다.
- arXiv 가져오기: HTML 본문·표·수식을 우선 보존합니다. 안전하게 가져오기 어려운 그림·표는 PDF에서 같은 항목의 위치를 확실히 찾았을 때만 그 영역으로 대체하며, 다른 HTML 내용은 유지합니다. 대응 위치가 불분명하거나 더 넓은 HTML 구조를 보존할 수 없으면 논문 전체를 PDF 방식으로 가져옵니다. PDF로 대체한 항목은 누락 진단에서 참고 사항으로 구분하고 원문 대조로 확인할 수 있습니다.
- 내보내기: 인터넷 없이 열리는 단일 HTML 리더, Markdown 대역본, 메모
- 번역 상태: 번역문이 있으면 번역 완료, 없으면 미번역으로 표시합니다. 새 AI 번역은 원문 숫자와 인라인 수식의 보존을 확인한 뒤 적용합니다. 표 복원 결과의 숫자가 비교 가능한 원본 표와 충돌하거나 복원에 실패하면 원본 이미지를 표시합니다. 문장 길이·용어에 따른 자동 품질 판정은 적용하지 않습니다.
- 원문 다시 분석: 리더의 논문 정보(⋯) → 원문 다시 분석에서 저장된 원본을 다시 읽고 이전·새 원문과 그림을 비교합니다. 원하는 항목만 선택해 적용하며, 내용이 바뀐 원문은 새 블록으로 추가합니다. 기존 원문·번역·주석·메모·대화는 이전 원문에 보존합니다. 미리보기에는 AI 호출이 없고, 새 원문의 번역은 처리 상태에서 따로 시작합니다.
- 누락 진단·원문 대조: 논문 정보(⋯) → 누락 진단에서 열리지 않는 이미지, 표·수식 복원 상태, 미번역과 적용되지 않은 번역 응답을 확인합니다. 본문마다 있는 원문 대조는 원본 PDF와 저장된 원문·번역을 나란히 보여 주고 근거가 확실한 위치를 강조합니다. 정확한 위치가 없으면 페이지를 직접 선택할 수 있습니다. 이미지·스캔 가능 페이지와 미반영 후보는 참고 사항으로 구분하며, 진단·대조는 AI 호출이나 저장 내용 변경 없이 진행합니다.
- 스캔 PDF 글자 읽기(OCR): 처리 화면이나 리더에서 스캔 페이지 글자 읽기를 열어 텍스트가 없는 쪽을 선택합니다. 영어·한국어를 인터넷 연결이나 별도 OCR 프로그램 없이 인식하며, 한 번에 최대 20쪽을 검토할 수 있습니다. 원본 PDF와 기존 그림·번역·메모는 보존하고, 미리보기에서 선택한 글자만 추가합니다. 인식 결과의 숫자·기호·수식과 표의 읽기 순서는 원문과 대조해야 합니다. OCR은 AI를 호출하지 않으며 번역은 처리 상태에서 별도로 시작합니다.
Releases 페이지에서 최신 설치 파일(현재 PaperDuet_0.10.2_x64-setup.exe)을 내려받습니다. 받은 파일은 릴리스 노트의 SHA-256 값으로 확인할 수 있습니다.
- 지원 환경: Windows 10/11 64비트
- 관리자 권한 없이 현재 사용자 계정에만 설치됩니다.
- Python, Node.js 등 별도 프로그램은 필요 없습니다. 실행에 필요한 WebView2가 없으면 설치 중에 자동으로 받습니다(인터넷 필요).
이 앱은 코드 서명이 되어 있지 않아 Windows가 경고를 띄울 수 있습니다.
- "Windows의 PC 보호" 창이 뜨면 추가 정보를 누릅니다.
- 실행을 누릅니다.
- 설치가 끝나면 시작 메뉴에서 PaperDuet을 실행합니다.
첫 실행 때 AI 연결 방식을 고릅니다. 연결하지 않아도 원본 PDF와 추출한 원문은 읽을 수 있습니다.
| 방식 | 준비물 | 비용 |
|---|---|---|
| API 키 | Anthropic, OpenAI 또는 Google AI Studio API 키 | 사용량만큼 API 요금 |
| 공식 CLI | Claude Code 또는 Codex CLI 설치 후 로그인 | 로그인한 구독 요금제 한도 안에서 사용 |
API 키: 키를 붙여 넣고 연결 확인을 누릅니다. 키는 Windows 자격 증명 관리자에만 저장되고 앱 데이터베이스에는 저장되지 않습니다.
공식 CLI: 앱은 로그인을 대신하지 않습니다. PowerShell에서 먼저 로그인한 뒤, 앱에서 CLI를 선택하고 연결 확인을 누릅니다.
claude auth logincodex loginCLI를 찾지 못하면 앱 설정에서 실행 파일 경로를 직접 지정할 수 있습니다.
- 논문 가져오기: 서재 화면 어디에나 PDF를 끌어 놓거나 상단의 + 논문 추가를 누릅니다. arXiv 논문은 논문 추가 창 아래쪽 칸에
2603.07952v1같은 ID나 URL을 넣고 가져옵니다. - 처리 시작: 처리 상태에서 단계별 모델과 예상 사용량을 확인하고 처리 방식을 고른 뒤 번역·주석 시작을 누릅니다. 기본값인 바로 처리는 몇 분 안에 끝나고, 절약 모드는 요금이 절반인 대신 제공자 사정에 따라 몇 시간까지 걸립니다. 처리 중에 창을 닫아도 백그라운드에서 계속되고 상단 알림으로 진행률을 보여 줍니다.
- 읽기: 완료된 논문을 열어 대역으로 읽습니다. 서재 맨 위 카드의 이어서 읽기로 마지막으로 읽던 쪽부터 바로 이어 읽을 수 있습니다. 처음이라면 서재의 사용 가이드에서 AI 연결, 논문 가져오기, Ask AI, 요약·흐름, 메모, 내보내기, 저장의 7가지 안내를 확인하세요.
- 수정: 필요할 때 번역·주석을 직접 고치거나 원하는 블록을 다시 생성합니다.
- 정리: 필요 없어진 논문은 책장에서 표지의 ⋯ 메뉴 → 삭제로 지웁니다. 원문 PDF, 번역, 주석, AI 대화, 메모가 함께 지워지며 되돌릴 수 없습니다.
- 질문과 내보내기: 문장을 선택하거나 문단 옆의 질문 버튼으로 AI에게 묻고, 논문 제목 아래의 내보내기로 HTML이나 Markdown 파일로 저장합니다.
- 리더의 논문 정보(⋯) → 누락 진단에서 열리지 않는 이미지, 표·수식 복원 상태, 미번역 항목을 확인합니다. 참고 사항과 확인이 필요한 항목을 구분해 보여 줍니다.
- 항목의 원문 대조를 눌러 원본 PDF와 저장된 원문·번역을 나란히 확인합니다. 위치가 확인되는 항목은 PDF에서 강조하고, 자동으로 연결되지 않은 항목은 페이지를 직접 선택해 확인합니다.
- 원문 다시 분석에서 이전·새 결과와 그림을 비교하고 필요한 항목만 반영합니다. 그림이나 배치만 달라졌다면 기존 번역을 유지합니다. 원문 내용이 달라졌다면 새 원문을 추가하고 기존 번역·주석·메모·대화는 이전 원문에 남깁니다. 새 분석에서 찾지 못한 기존 원문도 자동으로 삭제하지 않습니다.
- 텍스트가 없는 스캔 페이지라면 스캔 페이지 글자 읽기에서 영어·한국어 또는 두 언어를 함께 선택합니다. 한 번에 최대 20쪽을 읽고 원본과 비교한 뒤 필요한 결과만 반영합니다. 처리 상태에서도 열 수 있으며, 이미 원문 텍스트가 있는 쪽은 OCR 대상에서 제외합니다.
진단·대조·다시 분석·OCR은 AI를 호출하지 않습니다. 새로 반영한 원문을 번역하려면 처리 상태에서 번역을 별도로 시작하세요. OCR은 글자를 잘못 읽거나 표·수식을 일반 글자로 읽을 수 있으므로 숫자·기호와 읽기 순서를 확인해 주세요.
한 편을 처리할 때 AI 호출은 표·수식 복원, 용어집, 번역, 주석 단계로 나뉩니다. 호출을 묶고 필요한 문맥만 보내도록 설계해서 48쪽 논문 기준 약 20만 토큰을 목표로 합니다(오프라인 추정치). 실제 사용량은 모델과 논문에 따라 다르며, 처리 후 처리 상태 → 실제 AI 사용량에서 단계별로 확인할 수 있습니다.
절약 모드는 같은 요청을 제공자의 일괄 처리 API(Anthropic Message Batches, OpenAI Batch, Gemini Batch Mode)로 보내 토큰 요금을 50% 할인받습니다. 번역 품질은 바로 처리와 같습니다. 단계마다 한 번에 제출하고 결과를 기다리므로, 한 편에 보통 3~5번 대기합니다. API 키로 연결했을 때만 쓸 수 있고, 기다리는 중에 남은 부분 바로 처리를 누르면 이미 받은 결과는 그대로 두고 나머지를 바로 처리합니다.
AI 질문에는 선택한 문단의 원문·번역과 주변 문단의 영어 원문, 관련 용어만 보냅니다. 논문 전체 포함을 켜면 논문 본문을 대화 맨 앞에 두어, 같은 논문에 이어서 묻는 질문은 제공자의 프롬프트 캐시로 싸게 처리됩니다.
- 논문 원본, 번역, 주석, 대화는
%APPDATA%\PaperDuet에 저장됩니다. 앱 설정 → 새 저장 폴더 선택으로 옮길 수 있습니다. - 논문 내용은 번역·표·수식 복원·주석·요약·AI 질문처럼 AI 기능을 실행할 때 연결한 제공자에게 전송됩니다. 원문 다시 분석·누락 진단·원문 대조·OCR은 AI를 호출하지 않습니다. 연결 확인에는 논문 내용을 보내지 않습니다.
- 절약 모드에서는 처리가 끝날 때까지 요청 내용이 제공자 서버에 맡겨집니다. 결과를 받으면 앱이 제공자에게 해당 묶음(OpenAI는 업로드 파일까지)의 삭제를 요청합니다.
- 앱의 로컬 서버는 이 PC 안(루프백 주소)에서만 동작하며 세션 토큰이 없는 요청은 거부합니다.
- 업데이트: 0.8.1부터는 앱을 켤 때 새 버전을 확인하고, 앱 설정 → 업데이트 → 다운로드·검증 후 설치로 앱 안에서 바로 업데이트합니다. 서명이 확인된 파일만 설치하며 서재 데이터는 유지됩니다. 0.8.0 이하를 쓰고 있다면 0.8.1 설치 파일을 한 번 직접 내려받아 그 위에 설치하세요. 새 버전을 한 번 실행하면 데이터 형식이 갱신되어 이전 버전으로 되돌려 쓸 수 없습니다.
- 제거: Windows 설정 → 앱에서 PaperDuet을 제거합니다. 저장한 논문은 기본적으로 남겨 둡니다.
| 증상 | 해결 |
|---|---|
| 설치 파일이 실행되지 않음 | SmartScreen 경고에서 추가 정보 → 실행을 누릅니다. |
| CLI 연결이 안 됨 | PowerShell에서 claude --version 또는 codex --version이 동작하는지, 로그인했는지 확인합니다. |
| 미번역 항목이 남음 | 처리 상태에서 번역을 이어서 실행합니다. 이미 번역된 내용은 유지합니다. |
| 표나 수식이 깨짐 | arXiv ID로 가져오면 HTML을 우선 사용하고, 문제가 있는 그림·표는 대응하는 PDF 원본 영역을 사용합니다. 기존 논문은 원문 다시 분석에서 이전·새 결과를 비교한 뒤 필요한 항목만 반영하세요. |
| 그림이 잘리거나 다른 그림과 섞임 | 누락 진단 → 원문 대조로 원본을 확인한 뒤 원문 다시 분석에서 개선된 그림을 비교·반영하세요. 기존 논문을 새로 가져올 필요는 없습니다. |
| 스캔 PDF에 읽을 본문이 없음 | 처리 상태 또는 리더의 논문 정보(⋯) → 스캔 페이지 글자 읽기에서 텍스트가 없는 쪽을 선택합니다. 인식 결과를 원본과 비교한 뒤 반영하고 번역을 시작하세요. |
| "AI 제공자 서버가 혼잡" 안내 | Gemini·Claude 서버가 일시적으로 붐비는 경우입니다. 앱이 몇 번 자동으로 다시 시도한 뒤 멈춘 것이니, 잠시 후 처리 상태 → 이어서 실행을 누릅니다. |
| 절약 모드가 오래 걸림 | 제공자가 붐비면 최대 24시간까지 걸립니다. 급하면 처리 상태 → 남은 부분 바로 처리를 누릅니다. |
| 절약 모드를 고를 수 없음 | 공식 CLI(구독) 연결에서는 지원하지 않습니다. API 키로 연결해 주세요. |
리더는 문단 단위의 대역 읽기에 맞춰 본문을 재구성합니다. 원래 지면 배치·글꼴·페이지 구성은 원본 PDF에서 확인하세요. 복잡한 출판사 레이아웃이나 OCR의 표·수식 구조는 정확히 복원되지 않을 수 있습니다.
- Windows 10/11 x64
- Node.js 22.12 이상, Python 3.12
- Rust stable (MSVC), Visual Studio 2022 C++ Build Tools와 Windows SDK
- WebView2 런타임
프로젝트 루트의 PowerShell에서 처음 한 번 실행합니다. Python 가상환경과 npm 패키지를 설치하고 백엔드 사이드카를 빌드합니다.
.\scripts\setup.ps1개발 모드로 실행합니다.
npm run dev개발 모드는 설치한 앱과 서재를 따로 씁니다. 데이터는 %APPDATA%\PaperDuet-dev에 저장되며(설치판은 %APPDATA%\PaperDuet), 다른 폴더를 쓰려면 PAPERDUET_DATA_DIR 환경 변수로 지정합니다.
Python 백엔드를 고친 뒤에는 개발 앱을 닫고 npm run build:sidecar로 다시 번들한 다음 다시 실행합니다. 앱이 켜져 있으면 실행 중인 백엔드 파일을 바꾸지 못해 번들이 중간에 실패합니다.
macOS에서는 PYTHON=python3.12 bash scripts/setup-macos.sh로 준비한 뒤 같은 npm run dev, npm run build 명령을 사용합니다. 1차 맥 베타는 API 키 연결을 지원하며, 공식 CLI 연결은 제공하지 않습니다. 단축키는 ⌘+1/2/3, ⌘+F, ⌘+K, ⌘+Enter, 메모 저장은 ⌘+S입니다.
npm run build결과물은 src-tauri/target/release/bundle/nsis/PaperDuet_<버전>_x64-setup.exe입니다. 이 빌드는 자동 업데이트가 꺼진 개인용 설치 파일입니다. 자동 업데이트가 켜진 배포용 설치 파일과 latest.json은 Tauri 업데이트 서명 키를 준비한 뒤 .\scripts\release.ps1로 만듭니다.
버전은 npm run version:set -- 0.10.2처럼 한 번에 올립니다. package.json, package-lock.json, Cargo.toml, Cargo.lock, tauri.conf.json과 README의 설치 파일 이름이 함께 바뀌며, npm run version:check로 일치 여부를 확인할 수 있습니다. README 상단의 최신 버전 설명과 릴리스 노트는 따로 작성해야 합니다. 배포 빌드(release.ps1)는 버전이 어긋나면 시작하지 않습니다.
자동 업데이트가 켜진 Windows 배포용 빌드는 기존 업데이트 서명 키를 사용합니다. 개발 앱을 닫은 뒤 실행하고, 서명 키 비밀번호는 이 PC의 입력창에 입력합니다.
npm.cmd run version:check
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\release.ps1 -Notes "원문 보존·진단·대조 개선 및 스캔 PDF OCR 지원"완료되면 src-tauri/target/release/bundle/nsis/의 같은 빌드에서 생성된 PaperDuet_0.10.2_x64-setup.exe와 latest.json을 GitHub 릴리스에 함께 첨부합니다. 태그는 0.10.2처럼 v 없이 지정합니다. 릴리스 노트의 파일 크기와 SHA-256은 빌드가 끝났을 때 출력된 값으로 채웁니다. 이 스크립트는 GitHub에 자동으로 게시하지 않습니다.
npm run test:backendnpx playwright install chromiumnpm run test:e2e실제 유료 AI 호출은 자동 테스트에 포함되지 않습니다. 테스트용 샘플 데이터(fixtures/rex-omni.blocks.json)는 저장소에 포함하지 않으며, 이 파일이 없으면 이를 쓰는 백엔드·E2E 테스트는 자동으로 건너뜁니다.
| 경로 | 내용 |
|---|---|
src/ |
React + TypeScript 화면. 디자인 토큰은 src/styles/tokens.css |
src-tauri/ |
Tauri 2 데스크톱 셸(Rust) |
backend/paperduet/ |
Python FastAPI 사이드카: PDF 파싱, AI 파이프라인, 저장소 |
backend/paperduet/prompts/ |
단계별 AI 프롬프트 |
tests/, backend/tests/ |
Playwright E2E, pytest |
docs/licenses/ |
서드파티 라이선스 전문 |
PaperDuet은 GNU Affero General Public License v3.0으로 배포합니다. 수정한 버전을 배포하거나 네트워크 서비스로 제공할 때는 소스 코드도 같은 라이선스로 공개해야 합니다.
설치 파일에 포함되는 주요 서드파티 라이선스 전문은 docs/licenses/에 있습니다.
- PDF 파싱: PyMuPDF (AGPL-3.0)
- OCR 언어 데이터: Tesseract tessdata_fast 영어·한국어 모델 (Apache-2.0). 배포 데이터의 버전과 SHA-256은
backend/resources/ocr/manifest.json에 고정하며, 빌드 전에 검증합니다. - 글꼴: Inter, IBM Plex Sans KR, Source Serif 4, Noto Serif KR (SIL Open Font License 1.1). 수식 렌더링: KaTeX (MIT)