# PDF → Markdown 변환 검증·손실 목록·복구 전략

검증일: 2026-10-28. 이 보고서는 첨부된 두 PDF 자체만을 대상으로 합니다. 기준의 법적 효력·최신성·산식의 타당성은 검증 범위가 아닙니다.

## 1. 결과와 ‘무손실’의 범위

**독립적인 순수 Markdown 파일만으로는 원본 PDF 전체의 무손실 변환을 보장할 수 없습니다.** 텍스트뿐 아니라 좌표, 서체, 색, 벡터 객체, 수기 흔적, 이미지, 비표시 텍스트를 가진 형식이기 때문입니다.

이번 결과는 다음의 3층으로 구성했습니다.

1. **검색·편집용 Markdown:** 본문·조건·수치·산식·주석을 전사하고 페이지와 단 순서를 표시했습니다. 요약하거나 산식을 재해석하지 않았습니다.
2. **시각 보존용 이미지:** 13쪽 전체를 보존했습니다. 스캔본은 PDF 내 JPEG를 재압축 없이 추출했고, 전자 PDF는 144 dpi PNG로 렌더했습니다. Markdown 안에서 원본 페이지 이미지를 참조합니다.
3. **복구용 원본·추출 자료:** 원본 PDF 두 개를 바이트 그대로 보존하고 SHA-256을 대조했습니다. 텍스트 추출본, 문자·이미지 좌표 및 추출 예외 기록도 포함했습니다.

**보장 가능한 부분:** 묶음 안 원본 PDF 2개는 첨부 원본과 바이트가 같습니다. 따라서 변환 과정에서 본문으로 표현하지 못한 정보도 원본에서 다시 확인할 수 있습니다.

**보장하지 않는 부분:** Markdown의 문자 단위·서식 단위 완전 동일성, 스캔본 전사의 오독 가능성 0%, 미해독 2차원 코드의 데이터, 수기의 의도. 전자 PDF의 추출 텍스트 보존 검사는 PDF 화면상 모든 글자의 독립적인 OCR 검증과 동일하지 않습니다.

## 2. 산출물

| 파일 | 내용 |
| --- | --- |
| [2022_criteria.md](2022_criteria.md) | 3쪽 스캔본 전사. 각 쪽 왼쪽 → 오른쪽 단 순서. 3쪽 오른쪽에는 본문 없음 |
| [2026_criteria.md](2026_criteria.md) | 10쪽 전자 PDF 전사. 비표시·페이지 바깥 텍스트는 부록으로 분리 |
| [originals/2022-original.pdf](originals/2022-original.pdf) | 첫 첨부 PDF의 바이트 동일 원본 |
| [originals/2026-original.pdf](originals/2026-original.pdf) | 둘째 첨부 PDF의 바이트 동일 원본 |
| `assets/2022/` | 3쪽의 PDF 내 원래 JPEG |
| `assets/2026/` | 10쪽의 144 dpi PNG |
| `audit/manifest.json` | 원본 파일명·쪽 수·SHA-256·이미지 경로 |
| `audit/2026-pdfplumber-text.txt` | 간격을 복원한 전체 텍스트 추출본. 비표시·영역 밖 객체 포함 |
| `audit/*-pymupdf-text.txt` | 두 PDF의 별도 추출 결과. 스캔본은 텍스트층이 없어 내용이 비어 있음 |
| `audit/*-geometry.json` | 페이지별 텍스트·이미지 좌표, 링크·주석 정보. PDF 객체 전체를 덤프한 자료는 아님 |
| `audit/2026-transformations.json` | 기호 복원과 비표시·영역 밖 문장 이동 기록 |
| `audit/2026-outside-page.json` | 페이지 바깥 문자 객체의 실제 좌표 |
| `audit/validation.json` | 누락·기호·경로·해시 검증의 실제 결과 |

Markdown 파일만 따로 옮기면 상대경로 이미지·원본 PDF 링크가 연결되지 않습니다. 전체 ZIP을 풀고 같은 폴더 구조를 유지하십시오. 일반 Markdown 뷰어에서 본문은 읽을 수 있으나, 이미지 표시 및 한글 앵커 이동 지원은 뷰어마다 다릅니다.

## 3. 입력별 검증 범위

| 항목 | 2022 파일 | KRX 개선안 파일 |
| --- | --- | --- |
| PDF 쪽 수 | 3 | 10 |
| 원본 유형 | vFlat으로 생성된 이미지 스캔 | Hwp 2020 / Hancom PDF 생성 전자 문서 |
| 텍스트층 | 전 쪽 없음 | 전 쪽 존재. 일부 화면과 차이 있음 |
| 변환 방법 | 원본 이미지 확대 판독 후 수동 전사 | pdfplumber·PyMuPDF 추출 대조, 화면 기준 예외 복원 |
| 시각 점검 | 전 3쪽 및 좌·우단 확대 이미지 | 전 10쪽 렌더 이미지 |
| 표·도식 | 별도의 행렬형 표·차트는 확인되지 않음 | 별도의 행렬형 표·차트는 확인되지 않음. 색 상자는 문단으로 변환 |
| 검색 가능한 내용 | 전사한 본문·조건·산식 | 본문·조건·산식·각주와 별도 보존한 숨은 객체 |
| 남은 한계 | 저해상도 인쇄 흔적과 수기 중첩, 코드 미해독 | 비표시 텍스트의 편집 의도, 원문 산식의 내부 불일치 |

조건 점검 단위는 다음과 같습니다. 이는 전사를 확인하기 위한 구조 점검이며, 거래소 산식 해석 결과가 아닙니다.

| 문서 | 절 | 전사한 주요 조건 수 |
| --- | --- | --- |
| 2022 | 1. 초단기 알고리즘 시세관여 | 9 |
| 2022 | 2. 매수 허수성호가 / 매도 허수성호가 | 각각 6 |
| 2022 | 3. 양방향 시세관여 유형 | 6 |
| 2022 | 4. 일별 정정 또는 취소호가 과다 | 5. 마지막 조건에 (i)·(ii) 포함 |
| 2026 | Ⅰ. 초단기 알고리즘 시세관여 | 5 |
| 2026 | Ⅱ. 매수 허수성호가 / 매도 허수성호가 | 각각 6 |
| 2026 | Ⅲ. 양방향 시세관여 | 5 |
| 2026 | Ⅳ. 정정·취소 과다 | 5 |
| 2026 | 파생상품·ELW 매수 / 매도 허수성호가 | 각각 6 |

## 4. 손실·불확실성 목록

‘손실’은 Markdown 텍스트에서 표현되지 않는 부분, ‘복구 완료’는 변환 과정에서 발생한 추출 누락·오매핑을 바로잡은 부분입니다. 원본 PDF 보존 여부와 텍스트 복원 여부를 구분합니다.

| ID | 원본 위치 | 분류·상태 | Markdown에서 빠지거나 달라진 정보 | 상세 이유 | 적용한 보존·복구 | 남은 복구 전략 |
| --- | --- | --- | --- | --- | --- | --- |
| L-01 | 두 파일 전 쪽 | 서식 손실 / 원본 보존 | 정확한 지면 좌표, 여백, 글꼴·크기, 자간, 줄 길이, 페이지 비율 | Markdown은 문단·목록 중심이며 PDF 좌표계를 정의하지 않음 | 페이지 번호·단 순서 표시, 전 쪽 이미지, 원본 PDF | 정확한 재현은 원본 PDF 사용. 편집까지 필요하면 원본 HWP 또는 좌표 기반 HTML/CSS로 복원 후 전 쪽 렌더 대조 |
| L-02 | 2022 1쪽 안내문, 2026 1·2·3·6·7·8·10쪽 등의 색·상자·밑줄 | 강조 서식 일부 손실 / 이미지 보존 | 붉은 글씨·파란 수치, 노란·파란 배경, 밑줄, 테두리와 일부 굵기 | 표준 Markdown은 색·배경·임의 밑줄·정밀 테두리를 일관되게 지원하지 않음 | 2022 핵심 경고 일부 굵게 표시. 2026 조건을 제목으로 구조화. 정확한 강조는 원본 이미지 보존 | 특정 렌더러를 정한 뒤 HTML/CSS를 추가해 재현. 텍스트 검색용 원문과 시각용 파일을 병행 |
| L-03 | 2022 전 3쪽 인쇄 본문·산식 | 전사 불확실성 / 검토 후 잔존 | 스캔 잡음·번짐·왜곡 때문에 미세한 문자 모양과 공백의 완전 동일성은 미보장 | 원본 자체에 텍스트층이 없고 인쇄 문자가 이미지로만 존재. 확대가 원래 없는 해상도를 만들지는 못함 | 원본 확대 판독 후 전사. 수치·이상/이하/미만·산식 확인. 판독 불가라 확정한 본문 구절은 없지만 오독 가능성은 남음 | 원본 HWP·텍스트 PDF 확보가 최선. 없으면 더 선명한 재스캔 + 한국어 OCR + 독립 교정자 대조. 특히 산술기호와 작은 각주 우선 |
| L-04 | 2022 1쪽 오른쪽 ‘구간 내 시세변동률이 5% 이상’과 아래 산식 | 수기 의미 미전사 / 이미지 보존 | 붉은 원형 선·짧은 획의 정확한 모양과 작성 의도 | 수기 선은 표준 문자로 대응되지 않으며 의도는 원본만으로 확정할 수 없음 | 변환 주석 A-01로 존재·위치 명시. 원래 JPEG에서 획 보존 | 모양은 원본 이미지 또는 잘라낸 이미지로 보존. 의미는 작성자 설명이 있어야 확정 가능. 수치를 정정한 표시로 단정하지 않음 |
| L-05 | 2022 각 쪽 우하단, 총 3곳 | 코드 데이터 미해독 / 이미지 보존 | QR 형태 2차원 코드에 담긴 바이트·문자열 | 스캔에서 작고 번진 코드. 일반 바코드 디코더가 해독하지 못했으며 정확한 규격·데이터도 확정하지 못함 | 코드 포함 원래 JPEG 전부 보존. 확대·회전·여백 추가를 통한 재시도에서도 3곳 모두 결과 없음 | PDF 제작 전 원이미지·더 고해상도 스캔 확보 후 재시도. 특수 규격이면 생성 도구·발급기관의 디코더 사용. URL·문구 추정 금지 |
| L-06 | 2026 전 10쪽의 페이지 이미지 | 벡터·출력 특성 손실 / 원본 PDF 보존 | 벡터 확대 성능, 글꼴 객체, 색공간, PDF 내부 편집 객체 | PNG는 정해진 해상도의 RGB 래스터이므로 PDF 내부 객체를 담을 수 없음 | PNG를 원본 PDF와 함께 제공. PNG만을 ‘원본 무손실’이라 부르지 않음 | 큰 인쇄·정밀 확대·재편집에는 원본 PDF 사용. PNG의 픽셀 보간으로 원래 벡터를 복구할 수 없음 |
| L-07 | 2026 3쪽 상단 적출대상 상자 | 화면·텍스트층 불일치 / 분리 보존 완료 | `* 일별, 종목별로 5분 구간을 대상으로 1분씩 이동하며 적출`은 추출되지만 화면에는 없음 | 비표시 텍스트 객체와 실제 화면의 표시 내용이 다름. 문서 편집 경위는 미확인 | 화면상 본문에 섞지 않고 Markdown 부록 A에 전문 보존. 두 추출본·좌표도 보존 | 문장의 현행 본문 유효성을 확인하려면 원본 HWP 또는 작성기관 확인. 숨은 문장을 근거로 화면에 없는 조건을 확정하지 않음 |
| L-08 | 2026 2쪽, 페이지 너비 밖 | 영역 밖 텍스트 / 분리 보존 완료 | `2. 스프레드`가 x≈700.7 pt부터 존재. 페이지 너비는 595 pt | 일부 추출기는 페이지 안만 읽으므로 누락. 다른 추출기는 화면에 없는 객체까지 반환 | pdfplumber로 찾아 부록 B에 보존. 문자별 실제 좌표 별도 JSON 보존 | 원본 HWP에서 페이지·개체 배치 확인. 유효한 본문인지 확정될 때까지 조건으로 편입하지 않음 |
| L-09 | 2026 7쪽 5번 설명 | 특수기호 오매핑 / 복구 완료 | ①이 제어문자 또는 누락으로, ②가 `‚`로 추출됨 | Wingdings 글리프와 Unicode 매핑의 차이 | 원본 화면과 대조해 ①·② 복원. 추출 원형과 변환 기록 둘 다 보존 | 향후 재변환에서도 글꼴 매핑 대신 실제 글리프를 대조. 원본 화면과 코드포인트 검사 병행 |
| L-10 | 2026 7·10쪽 시행일·유예기간 앞, 총 4곳 | 특수기호 오매핑 / 복구 완료 | ◆가 문자 `u`로 추출됨 | Wingdings 글리프의 시각과 추출 코드가 다름 | 4곳 모두 ◆로 복원. 원래 추출본 별도 보존 | 재변환 시 기호 위치와 개수를 대조 |
| L-11 | 두 Markdown 전체 | 조판·공백 정리 / 원본·추출본 보존 | 원래의 연속 공백·줄바꿈·2단 배열이 제목·문단·순차 읽기 구조로 달라짐 | Markdown에서는 원본 조판과 읽기 순서를 동시에 그대로 유지하기 어려움 | 2022는 페이지·단 표시. 2026은 추출 줄을 Markdown 강제 줄바꿈으로 유지. 출처 밖 주석은 별도 표시 | 문자 공백까지 비교하려면 원본 이미지 및 raw 추출본을 기준으로 사용. 본문과 변환 주석을 구별 |

## 5. 원문 자체의 주의점 — 변환 오류와 구분

아래는 텍스트를 임의 교정하면 원문 충실도가 떨어지는 부분입니다. 의심되는 점을 기록했으며, 교정된 산식을 만들어 넣지 않았습니다.

| ID | 위치 | 원본 표기와 문제 | 이번 처리 | 의미를 확정하기 위한 방법 |
| --- | --- | --- | --- | --- |
| O-01 | 2022 2쪽 오른쪽, 3번의 (4) 설명 | `매도 시세관여 = 매수 체결로 직전가 대비 가격 변동이 있는 매매`에서 항목명과 ‘매수’가 불일치 | ‘매수’ 그대로 전사하고 A-02 주석 | 작성기관 원본·정오표로 확인. ‘매도’로 자동 교체하지 않음 |
| O-02 | 2026 5쪽 4번 | 매도 체결비 산식 아래 설명·괄호에서는 `10단계 매수 잔량`이라고 표기 | 원문 유지, B-02 주석 | 산출 설명의 매수/매도 방향을 작성기관에 확인 |
| O-03 | 2026 4·5·9·10쪽의 종목 잔량비 | 조건은 2.5배 또는 2배인데 해당 산식에는 `× 100 (%)` 표기 | 조건과 산식 모두 원문 그대로 보존, B-03 주석 | 단위 정의 또는 정오표로 확인. ×100 제거·임계값 환산을 임의 적용하지 않음 |
| O-04 | 2022 여러 비율 산식 | 조건은 `%`이지만 표시된 산식에는 `× 100`이 따로 적히지 않은 경우가 있음 | 원래 산식에 없는 ×100을 추가하지 않음 | 원문 표기 관행과 공식 정의를 별도 확인 |

2022 시행일은 파일명에서만 확인됩니다. 변환본 제목에 이 사실을 명시했으며, PDF 안에 시행일 문구가 있다고 주장하지 않았습니다. 2026이라는 식별자는 둘째 PDF 표지의 `2026. 10`에서 가져왔습니다.

## 6. 검증 방법과 결과 해석

1. 원본 2개의 SHA-256과 묶음 안 복사본 SHA-256을 각각 비교했습니다. 결과는 `audit/manifest.json`에 있습니다.
2. 원본 13쪽 전부를 이미지로 확인했습니다. 스캔본은 좌·우단을 확대해 읽었고 전자 PDF는 10쪽을 모두 렌더해 대조했습니다.
3. 전자 PDF에 대해 PyMuPDF와 pdfplumber의 결과를 비교했습니다. 차이가 나는 특수기호·비표시 문장·영역 밖 문자를 별도로 처리했습니다.
4. pdfplumber가 추출한 모든 줄을 대상으로 Markdown 본문·부록의 문자열 포함 여부를 검사했습니다. 기호 복원 6곳은 원문과 변환문 매핑을 적용해 검사했습니다. 이 검사는 같은 문장이 반복되는 곳의 의미상 배치까지 증명하지 않으므로, 페이지별 검사와 화면 점검을 함께 적용했습니다.
5. 전자 PDF의 비어 있지 않은 추출 줄 242개 중 242개가 페이지별 본문 또는 지정된 부록에 보존된 것을 확인했습니다. ①·②는 각 1곳, ◆는 4곳 복원했습니다. 원본 이미지 13개, Markdown의 파일·이미지 상대경로, UTF-8 읽기, 제어문자 잔존 검사도 통과했습니다. 상세 결과는 `audit/validation.json`에 있습니다.
6. 2022 스캔본에는 비교할 텍스트층이 없어 기계적인 문자 일치율을 제시하지 않았습니다. 전사 오독 가능성을 ‘0’ 또는 ‘100% 검증’으로 표시하지 않았습니다.

**보존 결과와 전사 정확도를 혼동하지 않아야 합니다.** 원본 바이트 보존은 검증 가능하지만, 사람이 읽어 전사한 스캔의 모든 문자가 맞다는 보증은 아닙니다. 확인된 본문 구절의 누락을 의도적으로 남기지 않았고, 텍스트로 확정하지 못한 비문자 정보는 L-04·L-05에 명시했습니다.

## 7. 복구 우선순위

| 순서 | 대상 | 현재 이미 수행한 조치 | 추가 자료가 있으면 할 수 있는 조치 |
| --- | --- | --- | --- |
| 1 | 원본 전체의 영구 복구 가능성 | PDF 원본 2개 바이트 보존·해시 대조 | 원본 파일 자체를 함께 보관 |
| 2 | 숫자·산식·비교조건 | 스캔 확대 판독, 전자 PDF 추출·화면 대조, 원문 의심점 유지 | 원본 HWP·텍스트 PDF로 독립 비교. 특히 O-01~O-04 공식 확인 |
| 3 | 화면에 없는 텍스트·깨진 기호 | 숨은 문장·영역 밖 문장 부록화, ①·②·◆ 복원 | 원본 HWP의 개체·편집 상태로 의도 확인 |
| 4 | 코드 데이터·수기의 의미 | 원이미지 보존, 코드 해독 재시도, 위치 주석 | 고해상도 원이미지·작성자 설명·생성기 전용 디코더 |
| 5 | 정확한 시각 재현 | 전 쪽 이미지와 원본 PDF 병행 | 렌더러 고정 후 HTML/CSS 또는 원본 편집 형식에서 복원 |

현재 추가 원자료 없이도 **원본 PDF로 돌아가는 복구**는 가능합니다. **미해독 코드의 내용·수기의 의도·원문의 정정값**은 원본 파일 보존만으로 새롭게 확정되는 정보가 아니므로, 별도 자료나 작성기관 확인이 필요합니다.
