설치
설치 — 낡은 PC를 서류 정리 비서로
사무실 구석의 낡은 PC에 설치기를 돌리면 그 PC가 서류를 읽고 라벨을 붙이는 비서가 됩니다. GPU 없이, CPU만으로, 인터넷 없이 돕니다. 서류는 기기를 떠나지 않습니다.
GPU 없음 · 인터넷 없이 동작 · 외부 API 호출 0 · Apache-2.0 — github.com/kingcheee/nabi-core
내려받기
운영체제별 설치기
Windows 설치 프로그램 v0와 Linux 설치 스크립트가 먼저 나오고, 모델을 동봉해 인터넷 없이 완결되는 USB 설치 이미지는 그다음입니다.
설치기 v0가 나오면 여기에 링크가 붙습니다. 지금은 공개 저장소 github.com/kingcheee/nabi-core를 받아 아래 「개발자 명령」으로 세울 수 있고, 라벨링이 실제로 도는 모습은 체험에서 볼 수 있습니다.
요구 사양
조건은 하나, CPU가 있을 것
그래픽카드를 요구하는 순간 「있는 기기 그대로」가 무너지기 때문에 우리는 GPU를 쓰지 않습니다. 설치기가 기기를 재서 그 기기에 맞는 것을 고릅니다 — 같은 프로그램이 2020년 노트북에서도, 6GB 폐폰에서도 돕니다.
| 항목 | 요구 | 비고 |
|---|---|---|
| 프로세서 | CPU만 (GPU 불필요) | x86 AVX1 / AVX2 · ARM dotprod — 설치기가 CPU 명령어를 재서 맞는 추론 엔진 빌드를 고릅니다 |
| RAM | 모델 크기 2B 기본 · 3B 상한 — 설치기가 잰다 | 총량·채널을 재서 모델 크기와 컨텍스트를 고릅니다. 메모리가 모자라면 안 뜨고, 싱글채널이면 생성이 느려집니다 |
| 폐폰 | 6GB 이상 · 2019년 이후 칩셋 조사 기준 | 같은 프로그램이 6GB 폐폰에서도 돕니다 — 폐폰 실측 |
| 인터넷 | 설치 뒤에는 필요 없음 | 모델은 기기 안에서 돌고 외부 API를 부르지 않습니다. 설치가 끝나면 인터넷을 끊어도 됩니다 |
설치기가 재는 것 — 그걸로 무엇을 고르나
| 설치기가 재는 것 | 그걸로 고르는 것 | 왜 |
|---|---|---|
| CPU 명령어 (x86 AVX1 / AVX2, ARM dotprod) | 추론 엔진 빌드 | 공식 llama.cpp 바이너리는 AVX2를 전제해 2013년 이전 CPU에서 그냥 죽습니다. 맞는 빌드를 골라야 그 PC가 삽니다 |
| RAM 총량·채널 | 모델 크기(2B 기본 · 3B 상한)와 컨텍스트 | 메모리가 모자라면 안 뜨고, 싱글채널이면 생성이 느려집니다. 재서 고르면 둘 다 미리 압니다 |
| 코어 구성 (big.LITTLE) | 스레드 수와 코어 고정 | 같은 폰이 설정 하나로 5.3배 느려질 수 있습니다. 기기마다 답이 반대라 고정 규칙 대신 설치할 때 짧게 재서 고릅니다 |
| 메모리 대역폭 | 2B / 3B | 라벨링 시간의 9할이 프롬프트 처리라 연산력과 대역폭이 벽입니다 |
우리가 지금까지 실제로 돌려 본 기기와 값은 소개 페이지의 실측과 폐폰 실측에 있습니다. 재지 않은 기기의 숫자는 적지 않습니다.
설치하면 생기는 것
백그라운드 서비스 하나, 브라우저 화면 하나
설치기는 백그라운드 서비스 하나와 브라우저에서 여는 화면 하나를 남깁니다. 화면은 체험과 같은 것입니다 — 받은 서류함, 확인 큐, 정리된 폴더. 작업공간은 이렇게 생깁니다.
받은 서류함/ 들어온 파일을 여기에 넣거나 끌어다 놓는다 정리됨/ 거래처별 표준 폴더 트리 (규칙이 만든다) 한빛나루식당/ 00_기본서류/ 한빛나루식당_사업자등록증.pdf 2026/ 01_원천세_급여/ 한빛나루식당_2026-08_4대보험취득확인서.hwpx 02_통장_증빙/ 한빛나루식당_2026-05_통장내역.xlsx 03_부가세/ 한빛나루식당_2026-Q1_카드매출매입내역.xlsx 04_결산_조정/ .nabi/registry.json 대표가 등록한 거래처 목록·별칭 (확인 큐의 수정이 여기로 돌아온다) .nabi/queue.jsonl 확인 큐 대장 — 지워지지 않는다 .nabi/moves.jsonl 이동 기록 — 되돌리기가 이걸 되짚는다
파일은 사라지지 않습니다. 이동은 옮기기 + 기록이고 되돌릴 수 있습니다. 같은 이름이 이미 있으면 덮어쓰지 않고 뒤에 번호를 붙입니다. 대장은 덧붙이기만 해서 이력이 지워지지 않습니다.
흐름
거래처 등록에서 승인까지 네 단계
설치가 끝나면 이 순서로 씁니다. 판정은 규칙엔진이, 승인은 사람이 합니다.
거래처를 등록합니다
대표가 맡은 거래처 이름을 넣습니다. 이 목록이 규칙엔진의 안전장치입니다 — 모델이 「한빚나루식당」이라고 읽어도 목록과 대조해 「한빛나루식당」으로 붙입니다.
서류를 받은 서류함에 넣습니다
텍스트 PDF · 엑셀 · 한글 · 워드, 그리고 스캔 PDF · 팩스 · 카톡 사진(JPG). 이미지는 기기 안의 OCR(Tesseract 한국어)로 글자를 뽑습니다.
비서가 라벨을 붙입니다
파일 1건마다 세션을 새로 열어 「거래처 · 분류 · 서류 종류 · 기간」을 내고, 규칙엔진이 대조합니다. 확신이 낮으면 「보류」.
확인 큐에서 승인합니다
승인한 것만 표준 폴더로 옮겨집니다. 보류된 것은 고쳐서 승인하고, 그 수정은 별칭으로 규칙에 되돌아갑니다.
개발자용
개발자라면 — 지금 터미널에서
설치 프로그램이 나오기 전, 저장소를 받은 상태에서의 흐름입니다(Linux·macOS·WSL). llama.cpp와 Tesseract 한국어 데이터가 깔려 있어야 합니다.
# 모델 서버 (무상태 세션 — 서류마다 KV 캐시를 새로 연다) llama-server -m MiniCPM5-2B-Q4_K_M.gguf --host 127.0.0.1 --port 8097 -c 2048 -ub 128 -t 4 --no-warmup & # 작업공간 + 거래처 등록 python3 -m engine init ~/nabi --clients "한빛나루식당,대성정밀공업사" --aliases "한빛나루=한빛나루식당" # 브라우저 화면 (체험과 같은 화면, 내 파일로) python3 -m web --workspace ~/nabi # → http://127.0.0.1:8098/try/ # 또는 터미널에서 cp 서류들/* ~/nabi/inbox/ && python3 -m engine scan ~/nabi python3 -m engine list ~/nabi --held && python3 -m engine approve ~/nabi --all-ready
무엇이 밖으로 나가나
아무것도 나가지 않습니다
아무것도 나가지 않습니다. 모델은 기기 안에서 돌고, 외부 API를 부르지 않으며, 설치가 끝나면 인터넷을 끊어도 됩니다. 세무사·회계사가 지는 비밀유지 의무(세무사법 제11조·제22조, 공인회계사법 제20조·제53조)를 기술로 지키는 방법이 이것입니다.
사용 도구 · 라이선스
전부 공개된 것 위에 서 있습니다
| 구분 | 도구 | 라이선스 |
|---|---|---|
| 추론 엔진 | llama.cpp (CPU 빌드 — AVX1 / AVX2 / ARM) | MIT |
| 모델 | MiniCPM5-2B (기본) · Qwen2.5-1.5B-Instruct (저사양 후보) | Apache-2.0 |
| OCR | Tesseract 5 + 한국어 데이터 | Apache-2.0 |
| 파서 | PyMuPDF · openpyxl · python-docx · hwpx 파서 | 각 라이선스 |
| 우리 코드 | 라벨링 엔진 · 규칙엔진 · 확인 큐 · 이 화면 — github.com/kingcheee/nabi-core | Apache-2.0 (공개) |