완성된 PDF로 시작하기
위 링크에서 공개 앱을 열거나 아래의 ZIP 복구 절차를 따르세요. 제공하는 app 폴더 외부에서 파일을 선택하세요. 앱은 PDF에서 추출할 수 있는 번호 텍스트를 대조합니다. 화면과 인쇄 결과는 평소 교정 과정에서 확인하고, OCR이 필요하면 별도로 처리하세요.
지원: 단면 4면 배치 티켓으로, 본권과 같은 티켓의 보관용 반권에 정확한 ASCII 세 자리 번호가 각각 두 개 있는 경우. 미지원: OCR/이미지로만 된 번호, 임의의 N면 배치, 양면, QR, 인쇄 승인.
텍스트 레코드가 있는 PDF · 최대 100 MiB / 250페이지
UTF-8 · 최대 1 MiB / 티켓 1,000개 · 선택한 두 열
범위 모드에서는 000–999 사이에서 시작 번호와 끝 번호를 포함한 개수가 양의 짝수가 되도록 지정합니다. 최대 500장까지 지원합니다.
동작을 확인한 환경
1.0.0 버전에서 확인한 결과입니다.
| 환경 | 확인 결과 |
|---|---|
| Debian 13.6 Linux Firefox 153.0 · Chromium 156.0.8078.79 | 로컬 자동 테스트에서 번호 대조와 JSON 및 HTML 보고서 다운로드에 성공했습니다. 저장한 JSON은 앱에 다시 불러오고 HTML은 브라우저에서 열었습니다. |
| Debian 13.6 Linux Firefox 153.0 일반 브라우저 조작, 범위 모드 예제 | 공개 HTTPS에서 일반 브라우저 조작으로 번호 대조와 두 보고서 저장을 확인했습니다. 저장한 JSON은 앱에 다시 불러오고 HTML은 브라우저에서 열었습니다. |
| Debian 13.6 Linux Chromium 156.0.8078.79 관리형 클라우드, 선언 범위를 지정한 CSV 모드 예제 | 번호 대조에 성공했습니다. 이 관리형 클라우드 Chromium 환경에서는 JSON 및 HTML 다운로드 버튼을 눌러도 파일이 생성되지 않았습니다. 원인은 확인되지 않았습니다. 이 실행에서 저장 결과를 다시 읽을 수 없었습니다. |
| Windows, macOS 및 그 밖의 환경 | 미검증입니다. |
관리형 Chromium에서 보고서가 저장되지 않으면 다운로드를 허용한 Debian 13.6 Linux의 Firefox 153.0에서 예제를 다시 실행하세요. 파일 두 개가 모두 저장되었는지 확인한 다음 작업에 사용하세요.
동봉된 티켓 8개 예제 사용하기
아래 링크에서 normal.pdf, stub-swap.pdf, source.csv, layout.json, expected.json을 저장하세요. 먼저 앱에서 normal.pdf를 열고 layout.json을 가져오세요. 범위 모드를 선택하고 000과 015를 입력한 뒤 마지막 페이지의 네 셀을 모두 선택한 상태로 두세요. 예제는 2페이지에 티켓 8개가 있습니다. 모든 페이지를 검사하고 세 판정 축을 각각 확인하세요. CSV 모드에서는 source.csv, 쉼표 구분자, 머리글 사용, 1열과 2열을 선택하세요. 범위에 따른 번호 구성 검사를 켠 상태에서 000–015를 다시 입력하세요. 정상 파일은 번호 레코드가 일치해야 합니다. stub-swap 파일은 반권을 일부러 서로 바꾼 파일로, 같은 티켓의 반권 불일치가 나와야 합니다. 두 파일 모두 화면 표시 품질은 미검증 상태로 남습니다. expected.json은 독립적으로 미리 확정한 예제의 기대 결과를 설명하는 파일이며, 앱 설정 파일이나 저장한 검사 보고서가 아닙니다.
예제 파일
구매 전에 두 예제 PDF를 범위 모드와 CSV 모드로 각각 실행하세요. 대조할 때마다 JSON과 HTML을 저장하고 두 파일이 실제로 있는지 확인하세요. ‘저장한 JSON 보고서 다시 읽기’로 JSON을 가져오고 HTML은 브라우저에서 여세요. 상태, 수량, 불일치한 티켓 위치를 앱과 예제의 예상 결과에 맞춰 확인하세요.
1. 파일과 기대 조건 선택
범위 모드에는 PDF와 선언 범위만 필요합니다. CSV 모드에는 기존의 두 번호 CSV가 추가로 필요하며, 새로운 티켓 ID를 인쇄할 필요는 없습니다. 구분자를 명시적으로 선택하고 첫 행이 머리글인지 표시하세요. 화면에 표시된 1부터 시작하는 열 번호로 서로 다른 번호 열 두 개를 입력하세요. CSV는 UTF-8이어야 하며 BOM이 있어도 됩니다. 쉼표, 세미콜론, 탭 구분자와 따옴표로 감싼 필드를 지원합니다. 빈 행이나 값, 불필요한 공백, 전각 숫자 및 기타 잘못된 값은 오류이며, 알리지 않고 보정하지 않습니다. CSV의 1–3자리 ASCII 숫자를 세 자리로 맞추려는 경우에만 앞자리 0 채우기를 켜세요. 원래 CSV 값은 보고서에 보존됩니다.
선언 범위 및 같은 티켓의 반권 대조
각 번호는 본권에 한 번, 해당 티켓의 보관용 반권에도 한 번 있어야 합니다. 원본 CSV의 번호 쌍은 제공되지 않은 것으로 취급하며 검증하지 않습니다.
0에서 999 사이의 ASCII 정수를 입력하세요. 양 끝을 포함한 번호 수는 양의 짝수여야 합니다. PDF에는 앞자리 0을 포함한 정확한 세 자리 값이 있어야 합니다.
기존 CSV 번호 쌍 및 같은 티켓의 반권 대조
순서 없는 번호 쌍과 그 출현 횟수를 기존 CSV와 대조합니다. 행 순서, 티켓 순서, 번호의 좌우 순서는 조건이 아닙니다.
선언 범위가 없으면 CSV 번호의 고유성과 전체 범위 충족 여부는 미검증입니다. CSV와 PDF에 같은 오류가 있을 수 있습니다.
0 채우기는 CSV 값에만 적용하고 원래 값도 보존합니다. PDF의 7을 007로 자동 보정하지 않습니다.
2. 티켓 네 개와 번호 영역 지정
배치는 서로 겹치지 않는 티켓 경계 네 개로 구성하며, 2 × 2 격자 외에도 자유롭게 배치할 수 있습니다. 각 경계 안에는 서로 겹치지 않는 번호 영역 네 개가 있습니다. 본권 1, 본권 2, 반권 1, 반권 2입니다. 영역 선택기에서 하나를 선택한 뒤 미리보기에서 사각형을 드래그하세요. 키보드로 작업하려면 영역을 선택하고 회전된 페이지 표시 영역에 대한 백분율로 왼쪽 위치, 위쪽 위치, 너비, 높이를 편집하세요. 시작 배치는 편의를 위한 것이며, 자동 감지 기능도 번호 영역이 올바르다는 증거도 아닙니다. 검사 전에 모든 경계와 번호 영역을 확인하세요.
마지막 페이지 이전의 모든 페이지는 네 셀을 모두 사용합니다. 마지막 페이지에서는 실제 티켓이 있는 셀만 정확히 선택하세요. 마지막 페이지가 꽉 차지 않은 경우 티켓은 1개, 2개 또는 3개일 수 있습니다. 선택한 수는 기대 티켓 수 및 페이지 수와 맞아야 합니다. 읽지 못했거나 검사에 실패한 티켓을 빈 셀로 표시해 숨기지 마세요. 빈 셀에 선언된 번호 영역 안에 번호 텍스트가 있으면 해당 내용도 검사하고 진단합니다. 혼합 배치, 표지, 양면 페이지를 알리지 않고 건너뛰지 않습니다.
미리보기는 번호 영역을 지정하고 차이의 위치를 찾는 데 사용합니다. 표시 품질을 검증하지는 않습니다.
3. 모든 페이지 검사
파일, 모드, 범위 또는 CSV 옵션, 영역을 확인한 뒤에만 모든 페이지 검사를 시작하세요. 진행 상황과 기대, 처리, 미처리 티켓 수를 확인하세요. 사용자가 중단했거나 리소스 오류로 실패한 작업은 미처리 수를 유지하며 전체 일치로 판정하지 않습니다. 필요하면 검사를 중단하고 입력 또는 리소스 문제를 해결한 뒤 전체 작업을 다시 실행하세요. 필요한 모든 대조가 끝나야 번호 레코드 일치로 판정할 수 있습니다. 화면 표시 품질은 검증 완료 상태가 되지 않습니다.
세 판정 축을 각각 확인하기
원본 CSV 번호 구성, PDF 번호 레코드, 화면 표시 및 인쇄 품질은 서로 별개의 결론입니다. CSV가 선언된 번호 구성을 충족하지 못해도 PDF는 그 잘못된 CSV와 정확히 일치할 수 있습니다. 이 경우 전체 작업은 통과할 수 없습니다. 범위를 지정하지 않는 CSV 전용 모드에서는 번호 쌍이 일치해도 원본 번호의 고유성과 전체 범위 충족 여부는 미검증입니다. 범위 모드에서는 원본 CSV와 원래 번호 쌍이 제공되지 않습니다. 확인된 차이, 확정할 수 없는 값, 오류, 사용자 중단은 의미가 서로 다릅니다. 종료된 화면을 모두 성공으로 여기지 말고 상태와 미처리 수를 확인하세요.
- 번호 레코드 일치
- 차이 발견
- 일부 번호 레코드를 확정할 수 없음
- 오류로 검사 중지
- 사용자가 검사 중단
- 미검증
차이 및 확정할 수 없는 번호 레코드
각 진단에는 고정된 코드, 기대값과 관측값이 있으며, 확인할 수 있는 경우 페이지, 티켓, 본권 또는 반권, 번호 영역도 표시합니다. 원래 작업이 열린 상태에서 ‘위치 표시’를 누르면 해당 페이지와 영역으로 돌아갈 수 있습니다. CSV 입력 오류도 확인할 수 있는 경우 행과 열을 표시합니다. 본권과 반권이 다르면 양쪽을 모두 검토하세요. 앱은 한쪽이 올바른 원본이라고 가정하지 않습니다. 읽을 수 없거나 모호한 영역은 확정할 수 없는 상태이며, 비어 있지만 올바른 번호로 취급하지 않습니다. 이 앱 안에서 완성된 PDF를 편집하는 대신 원본이나 영역 정의를 수정하세요.
4. 결과 확인 및 저장
JSON과 HTML 보고서를 모두 다운로드하고 브라우저가 실제로 저장한 파일을 확인하세요. JSON에는 기계가 읽을 수 있는 값, 입력 파일명, 바이트 수, SHA-256, 옵션, 설정, 버전, 수량, 진단이 보존됩니다. HTML은 안전하게 읽을 수 있는 형태로 보고서를 보여줍니다. ‘저장한 JSON 보고서 다시 읽기’로 저장한 JSON을 읽고 상태와 수량이 의도한 대로인지 확인하세요. 가져온 결과는 과거 기록이며 현재 선택한 PDF를 검사하지 않습니다. 과거 기록의 위치 정보가 새로운 검사를 대신할 수도 없습니다. 앱은 원본 PDF나 CSV를 덮어쓰지 않습니다. 보고서에는 선택한 파일명과 번호 데이터가 의도적으로 포함되므로 민감한 정보가 있을 수 있는 파일로 다루세요.
다운로드를 요청했습니다. 저장한 파일을 확인하세요. 브라우저에 요청했다는 사실만으로 디스크 저장이 확인되지는 않습니다.
설정 재사용 및 수정 후 재검사
모든 영역과 옵션을 확인한 뒤 재사용할 설정을 다운로드하세요. 설정은 배치와 옵션을 저장하며 원본 파일은 저장하지 않습니다. 수정한 PDF나 다른 PDF를 검사하려면 새 파일을 먼저 열고 필요에 따라 설정을 가져온 뒤 페이지 크기, 회전, 영역, 기대 조건 모드, 마지막 페이지의 사용 셀을 다시 확인하세요. 입력이나 옵션이 하나라도 바뀌면 현재 결과는 유효하지 않게 됩니다. 모든 페이지를 다시 검사하고 새 입력 해시와 연결된 새 보고서를 저장하세요. 수정한 한 페이지가 올바르거나 과거 보고서가 일치했다는 사실은 새 파일 전체가 일치한다는 증거가 아닙니다.
ZIP 보관 및 로컬 사용 복구
구매한 버전별 ZIP의 변경하지 않은 사본을 보관하세요. 압축을 풀어 app 폴더가 있는지 확인한 뒤 그 상위 폴더에서 터미널을 여세요. 지원하는 Python 3가 설치되어 있는지 확인하고, 없다면 Python 공식 웹사이트에서 받으세요. 아래 명령을 실행하고 로컬 앱을 사용하는 동안 해당 터미널을 열어 두세요. 데스크톱 브라우저에서 루프백 주소를 여세요. 고객의 PDF와 CSV는 app 폴더에 두지 말고 다른 폴더에서 선택하세요. file:// 직접 실행, 단일 HTML 파일, 설치 없이 오프라인으로 시작하는 방식은 제공되는 복구 방법이 아닙니다.
python3 -m http.server 8765 --bind 127.0.0.1 --directory appWindows에서는 컴퓨터에 설치된 Python 실행기를 사용하며, 보통 py -3에 같은 인수를 지정합니다. 설치된 명령이 python3가 아니라 python인 시스템에서는 그 명령을 사용하세요. 이 복구 서버를 외부 인터페이스에 바인딩하거나 인터넷에 공개하지 마세요.
py -3 -m http.server 8765 --bind 127.0.0.1 --directory app8765 포트를 이미 사용 중이면 본인이 이전에 실행한 서버만 Ctrl+C로 중지하거나, 8766처럼 사용하지 않는 다른 포트를 선택하세요. 서버 명령과 브라우저 주소의 포트를 같은 값으로 바꿔야 합니다. 브라우저 탭을 닫아도 서버는 중지되지 않습니다. 사용을 마치면 해당 터미널에서 Ctrl+C를 누르세요. app 폴더에는 해당 릴리스의 전체 빌드와 같은 버전의 worker, 글꼴, CMaps 및 기타 자산이 있어야 합니다. 자산이 없거나 버전이 맞지 않으면 오류를 무시하지 말고 전체 빌드를 복원해야 합니다.
python3 -m http.server 8766 --bind 127.0.0.1 --directory appZIP에서 복구할 때는 터미널에서 Python 3으로 로컬 HTTP 서버를 실행합니다. 루프백 주소에서 앱을 연 후 위의 샘플을 대조하고, 두 보고서를 저장했다가 다시 여세요.
업데이트 및 호스팅 중단
새 릴리스를 별도 폴더에 풀기 전에 이전 ZIP과 보고서를 보관하세요. 버전과 변경 사항을 읽고 버전이 맞는 전체 자산을 사용하세요. 호환되는 설정을 다시 가져오고 모든 영역을 확인한 뒤 실제 작업 전에 동봉 예제를 다시 실행하세요. 이전 버전과 새 버전의 worker나 자산을 섞지 마세요. 호스팅 주소가 바뀌거나 중단되면 ZIP 복구 수단을 보관하고 판매자의 이전 안내를 따르세요. 로컬 복구가 가능해도 구매한 12개월 서비스 기간 중 남은 기간에 대한 판매자의 동등한 호스팅 제공 의무는 사라지지 않습니다. 구매한 버전을 기한 없이 사용할 수 있다는 것은 모든 미래 기능이나 브라우저 업데이트를 보장한다는 뜻이 아닙니다.
자주 묻는 질문
번호 레코드가 일치하면 인쇄를 승인할 수 있나요?
번호 레코드 일치는 인쇄 승인이나 눈에 보이는 숫자, 숨은 텍스트, 잘림, 색상, 실제 인쇄 결과의 정확성을 뜻하지 않습니다. 평소의 화면 및 인쇄 교정을 계속하세요.
범위가 일치하면 원본 CSV의 번호 쌍도 증명되나요?
원본 CSV의 번호 쌍은 제공되지 않았습니다. 범위 일치만으로 원래 번호 조합을 검증할 수 없습니다.
CSV와 PDF에 같은 오류가 있을 수 있나요?
선언 범위가 없으면 CSV 번호의 고유성과 전체 범위 충족 여부는 미검증입니다. CSV와 PDF에 같은 오류가 있을 수 있습니다.
왜 번호 영역을 확정할 수 없나요?
필수 영역에 읽을 수 있는 텍스트가 없거나, 후보가 여러 개이거나, 텍스트가 경계를 넘거나, 지원하지 않는 배치이거나, 필요한 리소스를 사용할 수 없을 수 있습니다. 앱은 추측하거나 PDF 값에 0을 채워서 이런 영역을 일치로 바꾸지 않습니다. 원본이나 설정을 수정하고 지원 범위 안의 텍스트 기반 PDF를 사용해 모든 페이지를 다시 검사하세요. 이미지로만 된 번호나 윤곽선으로 변환된 번호에는 다른 작업 방식이 필요합니다.
구매와 제공 내용
세금 포함 1,280엔을 한 번 결제하면 1명이 구매한 버전을 기한 없이 상업적으로 사용할 수 있습니다. 다운로드 ZIP에는 완전한 앱, 필요한 리소스, 안내서, 예제가 들어 있습니다. 구매일부터 12개월 동안 다시 다운로드, 결함 수정, 텍스트 지원, 동등한 호스팅을 제공합니다. ZIP을 보관하세요. 공개 앱과 예제는 구매 전에 사용해 볼 수 있습니다.
라이선스 및 텍스트 지원
1인 사용자용 일회 구매입니다. 구매한 버전은 기한 없이 사용할 수 있습니다. 배포/재다운로드, 결함 수정, 텍스트 지원, 동일 기능의 호스팅 서비스는 구매 후 12개월 동안 제공합니다. ZIP을 보관하세요. 영구 호스팅, 재다운로드, 새 기능은 약속하지 않습니다. 오픈 소스 구성 요소의 권리는 각 라이선스에 따릅니다.
지원 요청 전에는 동봉된 합성 예제로 먼저 재현하세요. 앱/브라우저 버전, 진단 코드, 익명화한 절차를 판매자의 BOOTH 텍스트 문의 창구로 전달하세요. 일반적인 문의 요건으로 고객의 원본 PDF, CSV, 신원을 드러내는 파일명을 보내지 마세요.
로그아웃 상태에서는 BOOTH 로그인 화면이 열립니다.