설치

설치 — 낡은 PC를 서류 정리 비서로

사무실 구석의 낡은 PC에 설치기를 돌리면 그 PC가 서류를 읽고 라벨을 붙이는 비서가 됩니다. GPU 없이, CPU만으로, 인터넷 없이 돕니다. 서류는 기기를 떠나지 않습니다.

GPU 없음 · 인터넷 없이 동작 · 외부 API 호출 0 · Apache-2.0 — github.com/kingcheee/nabi-core

내려받기

운영체제별 설치기

Windows 설치 프로그램 v0와 Linux 설치 스크립트가 먼저 나오고, 모델을 동봉해 인터넷 없이 완결되는 USB 설치 이미지는 그다음입니다.

Windows 설치 프로그램 v0 준비 중

포터블 zip + 설치 스크립트 + 서비스 등록.

내려받기 — 준비 중

Linux 설치 스크립트 준비 중

Windows 설치 프로그램과 함께 먼저 나옵니다.

내려받기 — 준비 중

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          이동 기록 — 되돌리기가 이걸 되짚는다

파일은 사라지지 않습니다. 이동은 옮기기 + 기록이고 되돌릴 수 있습니다. 같은 이름이 이미 있으면 덮어쓰지 않고 뒤에 번호를 붙입니다. 대장은 덧붙이기만 해서 이력이 지워지지 않습니다.

흐름

거래처 등록에서 승인까지 네 단계

설치가 끝나면 이 순서로 씁니다. 판정은 규칙엔진이, 승인은 사람이 합니다.

01

거래처를 등록합니다

대표가 맡은 거래처 이름을 넣습니다. 이 목록이 규칙엔진의 안전장치입니다 — 모델이 「한빚나루식당」이라고 읽어도 목록과 대조해 「한빛나루식당」으로 붙입니다.

02

서류를 받은 서류함에 넣습니다

텍스트 PDF · 엑셀 · 한글 · 워드, 그리고 스캔 PDF · 팩스 · 카톡 사진(JPG). 이미지는 기기 안의 OCR(Tesseract 한국어)로 글자를 뽑습니다.

03

비서가 라벨을 붙입니다

파일 1건마다 세션을 새로 열어 「거래처 · 분류 · 서류 종류 · 기간」을 내고, 규칙엔진이 대조합니다. 확신이 낮으면 「보류」.

04

확인 큐에서 승인합니다

승인한 것만 표준 폴더로 옮겨집니다. 보류된 것은 고쳐서 승인하고, 그 수정은 별칭으로 규칙에 되돌아갑니다.

개발자용

개발자라면 — 지금 터미널에서

설치 프로그램이 나오기 전, 저장소를 받은 상태에서의 흐름입니다(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
OCRTesseract 5 + 한국어 데이터Apache-2.0
파서PyMuPDF · openpyxl · python-docx · hwpx 파서각 라이선스
우리 코드라벨링 엔진 · 규칙엔진 · 확인 큐 · 이 화면 — github.com/kingcheee/nabi-coreApache-2.0 (공개)