HWPX 보고서 자동화가 매주 수작업이 되는 이유#
HWPX 문서의 표와 문단을 보고서에 반복해서 옮겨야 한다면 필요한 내용을 추출해 생성 과정에 전달하는 방식을 검토할 수 있습니다. 도구의 지원 범위와 추출 결과는 별도로 확인해야 합니다.
먼저 원본 형식과 필요한 추출 범위를 구분하세요.
| 대상 | 접근할 때 확인할 점 | 사람이 검증할 결과 |
|---|---|---|
| HWPX 문단 | XML 기반 패키지 구조와 사용할 파서 | 문단 순서와 빠진 내용 |
| HWPX 표 | 셀·병합·중첩 표를 다룰 도구의 지원 범위 | 원본 표와 행·열·값 대조 |
| 기존 HWP | HWPX와 다른 바이너리 형식인지 확인 | 별도 변환 시 원본과 변환본의 차이 |
| 암호·DRM 문서 | 접근 권한과 사용 가능한 도구 확인 | 승인되지 않은 우회 없이 처리 가능한지 |
한컴의 HWPX 구조 설명은 HWPX를 XML 기반 ZIP 구조로, HWP를 바이너리 형식으로 설명합니다. 구조가 공개되어 있다는 사실만으로 모든 표가 자동으로 정확히 추출되는 것은 아닙니다. 한컴 HWPX 안내도 DRM 호환성 문제를 설명합니다. 출처 확인: 2026-11-01.
- 원본을 백업하고 사용 권한이 있는 비식별 HWPX 샘플에서 추출할 표·문단, 병합 셀 처리 방식, 원하는 출력 형식을 정합니다.
- Mirr Code에 관련 코드를 조사하고 선택한 도구로 추출 및 검증 코드를 제안해 달라고 요청합니다. 실제 처리는 환경에 준비된 HWPX 지원 도구와 파일 접근 권한에 달려 있습니다. 외부 서비스가 필요할 때만 MCP 연결 안내를 확인하세요.
- 담당자가 추출 결과의 문단 순서, 표의 행·열·셀과 누락 여부를 원본에서 직접 대조한 뒤 보고서 생성 단계로 넘깁니다. 변환이나 배포 전에도 별도 승인을 받습니다.
추가 검증 필요: 한컴오피스 원본 표와 실제 추출 CSV를 대조한 기록은 없습니다.
Before / After: HWPX 보고서 자동화의 현재 비용과 자동화 후 결과#
수작업 추출과 자동화 결과를 비교하려면 같은 원본과 검증 기준을 사용해야 합니다.
추가 검증 필요: 같은 HWPX의 원본과 변환 결과를 이용한 작업 전후 비교는 수행하지 않았습니다.
단계별로 하기: 입력 규칙 → 실행 → 검증#
이 글에는 추출→템플릿 채우기→검증을 실제로 실행한 기록, 사용할 도구의 버전과 라이선스 확인, 한컴 의존성 확인, 원본과 생성본의 화면 대조가 아직 없습니다. 파일 구조 설명은 완료된 자동화 사례가 아닙니다.
위의 절차처럼 추출 범위와 도구를 정하고 원본과 결과를 대조하도록 계획하세요.
요청 예시: “승인된 샘플의 지정된 표를 읽을 수 있는지 먼저 조사해 줘. 지원하지 않는 셀 구조는 조용히 건너뛰지 말고 보고하고, 결과는 원본과 별도 파일에 저장해 줘.” 이는 요청 예시이며 실행 결과는 아닙니다.
검증: 테스트 출력과 체크리스트#
검증할 때는 문단 순서와 표의 행·열·셀을 원본과 비교하고 빠진 항목을 기록하세요.
추가 검증 필요: HWPX 파싱, 병합 셀과 중첩 표의 추출, CSV 출력 및 한컴오피스 원본 대조는 아직 수행하지 않았습니다.
주의할 점과 한계#
| 문제 | 확인할 지점 | 처리 기준 |
|---|---|---|
| 문서가 열리지 않음 | 실제 HWP/HWPX 형식·암호·DRM과 도구 지원 | 우회하지 말고 소유자에게 승인된 접근 확인 |
| 셀 값이 섞임 | 병합·중첩 셀의 위치와 추출 매핑 | 원본의 행·열·단위를 직접 대조 |
| 새 보고서 내용 누락 | 템플릿 필드와 입력 데이터의 대응 | 필수값 누락을 실패로 처리할지 사전 결정 |
| 생성 문서 배치가 다름 | 사용 도구·한컴 의존성과 대상 뷰어 | 생성본을 실제 사용 환경에서 열어 검토 |
이 표는 파이프라인 검토 기준이지 문제 재현이나 해결 기록은 아닙니다. 행 수·합계 assertion과 사람이 확인한 원본·생성본이 함께 필요합니다.
문서 형식, 보안 설정과 도구의 지원 범위에 따라 처리 가능 여부가 달라집니다.
HWP 파일의 확장자만 바꿔 HWPX로 취급하지 마세요. 암호화나 DRM이 있으면 소유자에게 승인된 접근 방법을 확인하고, 내용을 외부 모델이나 서비스에 보내기 전에 조직의 정책을 확인하세요.
보고서 양식보다 먼저 정할 데이터 계약#
주간 보고서를 자동화할 때 처음부터 완성된 한글 문서와 똑같은 모양을 만들려고 하면 추출 오류와 서식 오류가 섞입니다. 먼저 어느 표에서 어떤 값을 가져오는지 적으세요. 예를 들어 승인된 가상의 지점 보고서에서 지점 코드, 보고 기간, 매출 금액, 작성 상태만 필요하다면 사진, 결재선, 연락처는 추출 범위에서 제외합니다. 보고서 전체를 모델에 보내는 대신 필요한 필드와 비식별 예시를 전달할 수 있습니다. 데이터 계약에는 필드 이름뿐 아니라 값이 없는 경우의 처리와 원본 위치도 들어갑니다.
지점 이름을 식별자로 쓰면 같은 지점의 표기가 달라질 때 중복이 생깁니다. 지점 코드를 별도 키로 두고 표시 이름은 보조 값으로 다루는 편이 검토하기 쉽습니다. 보고 기간도 파일명에서 추측하지 말고 문서 안의 기준 필드와 대조하세요. 파일명은 이번 주인데 본문은 지난주인 경우를 오류로 볼지 담당자 확인 대상으로 보낼지 정합니다. 금액의 단위가 원인지 천 원인지, 괄호가 음수인지 주석인지도 계약에 적어야 합니다. 숫자만 추출하면 이 의미가 사라집니다.
| 계약 항목 | 가상의 주간 매출 표에서 정할 규칙 | 어긋났을 때 처리 |
|---|---|---|
| 문서 식별 | 원본 파일의 해시와 보고 기간을 함께 기록 | 같은 이름의 다른 파일을 새 입력으로 구분 |
| 표 식별 | 제목과 헤더 조합으로 대상 표를 지정 | 표가 없거나 여러 개면 담당자 확인 |
| 행 식별 | 지점 코드와 기간을 업무 키로 사용 | 중복을 합산하지 않고 원본 위치 보고 |
| 금액 의미 | 원 단위 정수, 취소 금액 허용 여부 명시 | 단위 미상·허용하지 않은 음수는 실패 |
| 빈 셀 | 미제출과 실제 영을 서로 다른 상태로 유지 | 빈 값을 임의의 영으로 채우지 않기 |
| 추적 정보 | 파일, 구역, 표, 행·열 또는 도구의 위치 표시 | 위치 없는 값은 대조 완료로 처리하지 않기 |
이 표의 규칙은 설계 예시입니다. 모든 HWPX에 같은 표 번호나 필드 이름이 있다는 뜻은 아닙니다. 원본 담당자와 의미를 합의한 다음 파서가 그 위치를 안정적으로 표현하는지 확인해야 합니다. 계약이 바뀌면 이전 입력을 새 규칙으로 다시 처리할지, 이전 결과를 유지할지도 정하세요. 과거 결과가 조용히 바뀌면 보고서 숫자의 출처를 설명하기 어렵습니다.
병합 셀과 중첩 표를 평평하게 만들 때#
눈에 보이는 한 행이 추출 데이터의 한 행과 같다고 가정하지 마세요. 지점 이름이 여러 행에 걸쳐 병합된 표에서는 뒤쪽 행의 지점 셀이 비어 보일 수 있습니다. 이때 위 값을 무조건 채우면 제목이나 소계까지 지점 데이터로 잘못 묶을 수 있습니다. 먼저 해당 셀이 병합 범위에 포함되는지 도구가 알려 주는지 확인하고, 헤더·본문·소계의 역할을 나눕니다. 지원하지 않는 병합 구조는 자동 추정하지 말고 예외로 남기는 편이 안전합니다.
중첩 표는 바깥 셀 안에 별도 표가 있는 경우입니다. 모든 텍스트를 이어 붙이는 방식은 안쪽 표의 열 경계와 문단 순서를 잃을 수 있습니다. 바깥 표 위치와 안쪽 표 위치를 별도로 남기고 필요한 표만 선택하세요. 주석, 각주, 텍스트 상자에 있는 숫자가 본문 금액에 섞이는지도 살펴봅니다. 헤더가 여러 줄인 표라면 각 열의 의미를 사람이 먼저 이름 붙이고, 파서가 읽은 헤더와 그 이름을 대응시키는 자료가 필요합니다.
합계 검사는 이런 구조 검사를 보완합니다. 중복 한 건과 누락 한 건의 금액이 같으면 전체 합계는 맞을 수 있습니다. 행 수, 업무 키의 집합, 지점별 부분합, 전체 합계를 함께 비교해야 합니다. 원본 표의 소계를 데이터 행으로 다시 더하는 실수도 자주 검토할 대상입니다. 소계 행은 라벨과 위치 규칙으로 분리하고, 제거한 이유와 건수를 기록하세요. 원본에 소계가 틀렸다면 스크립트 결과에 맞춰 원본을 몰래 고치지 말고 담당자에게 차이를 전달합니다.
추출 결과와 템플릿 채우기를 분리하는 방법#
권장 구조는 원본 읽기, 중간 데이터 검증, 보고서 내용 생성, 대상 뷰어 확인의 네 단계입니다. 중간 데이터는 CSV나 JSON처럼 사람이 비교하기 쉬운 형태로 두되 원본 위치를 잃지 않게 구성하세요. 문서 생성 코드는 원본 HWPX를 다시 해석하지 않고 검증된 중간 데이터만 받도록 나누면 원인을 좁히기 쉽습니다. 숫자가 틀리면 추출·계약부터, 숫자는 맞는데 문장이 틀리면 생성 규칙부터 조사할 수 있습니다.
템플릿에는 필수 필드와 선택 필드를 구분합니다. 보고 기간이 없으면 실패해야 하지만 선택 메모가 없으면 빈 문단을 허용할 수도 있습니다. 빈 문단, 영, 미제출을 같은 문자열로 바꾸지 마세요. 금액 표시의 쉼표와 단위는 마지막 출력 단계에서 적용하고 계산용 값은 숫자로 유지합니다. 표가 다음 페이지로 넘어갈 때 헤더 반복이나 셀 높이가 어떻게 되는지는 데이터 검사로 알 수 없습니다. 생성한 파일을 실제 사용할 한컴 환경에서 여는 검토가 따로 필요합니다.
출력 파일은 원본과 다른 경로에 저장하고, 임시 결과를 최종본으로 바로 덮어쓰지 않는 흐름을 검토하세요. 일부 입력만 성공했을 때 전체 보고서처럼 보이는 파일을 발행하면 안 됩니다. 모든 필수 입력의 처리 상태가 확인된 다음 결과를 확정하도록 설계합니다. 이전 보고서는 새 실행이 실패했다고 삭제하지 말고 이전 기간의 결과라는 표지를 유지하세요. 자동화 실패와 업무 데이터 미제출은 담당자가 취할 행동이 다르므로 오류 메시지도 나눕니다.
라이브러리 선정 때 받아야 할 답변#
선정표에는 패키지 이름, 정확한 버전, 라이선스, 유지보수 출처, 읽기와 쓰기 지원 범위를 넣으세요. HWPX를 읽는 라이브러리라고 해서 템플릿 채우기까지 지원하는 것은 아닙니다. 반대로 문서 생성 도구가 기존 복잡한 문서의 모든 요소를 보존하는 것도 아닙니다. 설치된 한컴오피스나 특정 운영체제에 의존하는지, 별도 실행 파일이나 서비스가 필요한지도 명시해야 다른 사람이 같은 환경을 준비할 수 있습니다.
라이선스 이름만 적고 끝내지 말고 조직의 배포 형태에 맞는 검토를 요청하세요. 내부 스크립트인지 고객에게 배포하는 제품인지에 따라 검토 질문이 달라질 수 있습니다. 이 글은 특정 라이선스의 법률 판단이나 특정 HWPX 라이브러리의 채택을 대신하지 않습니다. 후보마다 같은 비식별 샘플과 같은 기대값으로 비교하고, 실패한 구조를 표에 남기면 선택 이유를 설명하기 쉽습니다. 읽을 수 있었던 문서 한 개를 전체 문서 호환성으로 일반화하지 마세요.
ZIP과 XML 구조를 조사할 때의 안전선#
HWPX가 ZIP과 XML을 사용한다는 설명은 패키지 안의 모든 파일을 무조건 풀어도 된다는 뜻이 아닙니다. 신뢰하지 못하는 압축 파일은 파일 수, 압축 해제 후 크기, 경로와 처리 시간의 제한을 먼저 검토해야 합니다. 문서와 무관한 경로로 파일이 나가거나 큰 입력 때문에 메모리를 소모하는 경우도 고려하세요. XML 파서의 보안 특성 역시 선택한 구현과 버전에 따라 확인해야 합니다. Python 문서도 신뢰하지 못하는 XML 처리의 주의사항을 별도로 다룹니다.
이 단계에서 얻은 것은 구조 조사 결과입니다. XML 한 조각을 파싱하거나 CSV 한 개를 만들었다고 유효한 HWPX 생성이 입증되지는 않습니다. 패키지 관계, 필수 구성 요소와 대상 뷰어 동작까지 확인해야 실제 문서라고 부를 수 있습니다. 합성 XML은 네임스페이스를 지정한 행 선택과 합계 검사를 시험하는 데만 사용하고 한컴에서 열린 문서나 서식 보존 증거로 제시하지 마세요. 원본 표 화면과 추출값을 나란히 대조한 기록은 아직 없습니다.
주간 실행을 인계할 때 남길 기록#
담당자가 바뀌어도 같은 결과를 설명하려면 입력 목록, 계약 버전, 도구 버전, 실행한 명령, 오류 파일, 결과 위치를 함께 남깁니다. 로그에는 실제 문서 본문이나 개인정보를 모두 담을 필요가 없습니다. 비식별 파일 식별자와 실패 필드, 원본의 승인된 위치만으로 조사 가능한지 검토하세요. 성공한 파일 수와 전체 대상 수를 함께 적어 일부 누락을 숨기지 않습니다. 담당자는 처리 실패를 고친 뒤 같은 입력으로 다시 실행하고 이전 결과와 차이를 확인합니다.
보고서 검토자는 숫자와 문장을 나눠 봅니다. 데이터 담당자는 원본과 중간 데이터의 일치, 문서 담당자는 기간·표 제목·단위·페이지 배치, 승인자는 공개 범위와 최종 전달 대상을 확인하는 방식입니다. 한 사람이 모두 맡더라도 검사 항목은 구분해 기록하세요. 확인한 문서의 해시를 남기면 이후 수정본과 검토본을 혼동하지 않을 수 있습니다. 이것은 권장 인계 절차이며 이 글에서 실제 주간 운영이나 한컴 문서 생성을 수행했다는 주장은 아닙니다.
추가 근거: Python ZIP 주의사항, XML 보안. 구조·파서 참고 자료이며 HWPX 라이브러리 선정과 실제 문서 검증은 별도입니다.
직접 실행한 일반 XML 셀 매핑 연습#
2026-11-03에 Python 3.13.9의 xml.etree.ElementTree로 직접 작성한 작은 XML을 읽었습니다. 이 파일은 urn:synthetic-report라는 예시 네임스페이스의 표이며 HWPX 문서가 아닙니다. ZIP 패키지나 한컴 문서를 생성하지 않았고 한컴오피스에서 열지도 않았습니다. 목적은 네임스페이스를 지정한 행 선택과 독립 기대값 검사의 관계를 보여 주는 것입니다. 실행한 핵심 검사는 다음과 같습니다.
root = ET.fromstring(xml)
values = root.findall("{urn:synthetic-report}row")
assert len(values) == 3
assert sum(int(row.attrib["amount"]) for row in values) == 230
입력의 세 행은 A 120, B 80, A 30입니다. 행 수 3과 전체 합계 230은 이 입력에서 사람이 먼저 계산한 기대값입니다. 실제 출력은 xml:generic: rows=3 total=230 (not HWPX)였습니다. 소스와 생성 파일, 실행 환경과 출력을 함께 남겼으므로 어떤 XML을 검사했는지 대조할 수 있습니다. 실행 명령은 합성 예제 스크립트에 새 결과 디렉터리 경로를 전달하는 형태입니다. 같은 결과 디렉터리가 이미 있으면 중단하도록 작성했습니다.
이 검사가 보여 주는 범위는 매우 좁습니다. 예시 XML의 세 속성값을 읽어 행 수와 합계를 확인했을 뿐입니다. HWPX의 셀 좌표와 병합 범위, 문단·중첩 표, 패키지 관계와 서식은 검사하지 않았습니다. XML을 파싱할 수 있었다는 사실은 새 보고서가 유효하거나 시각적으로 보존됐다는 증거가 아닙니다. 추출→템플릿 채우기→검증 파이프라인과 라이브러리·버전·라이선스·한컴 의존성의 확인이 필요한 상태는 그대로입니다.
실제 문서를 검증할 때는 이 정도의 독립 기대값 검사에 더해 원본 표의 위치와 추출값, 필수 항목의 누락과 대상 뷰어 화면을 연결해야 합니다. 일반 XML 예제는 이 중 숫자 검사 구조를 설명하는 자료로만 사용하세요. 승인된 원본이 준비되기 전까지 임의 XML을 .hwpx로 이름 붙이거나 가짜 정상 문서를 만들어 화면 증거처럼 제시하지 않습니다. 문서 처리 도구가 지원하지 않는 구조도 성공 행에 섞지 말고 별도 오류로 보고해야 합니다.
원본 표에 같은 제목이 반복된다면 제목 하나만으로 대상을 고르지 마세요. 구역과 앞뒤 문단, 헤더와 단위의 조합을 검토하고 후보가 여러 개면 담당자 확인으로 돌립니다. 새 양식에서 위치가 달라졌을 때 잘못된 표를 조용히 읽는 것보다 명확히 실패하는 편이 결과를 조사하기 쉽습니다. 이 선택 규칙도 계약 버전에 포함해야 다음 주 자료에서 같은 판단을 반복할 수 있습니다.
XML 네임스페이스 때문에 빈 결과가 나올 때#
XML 네임스페이스가 있는 파일에서는 태그 이름만으로 찾으면 행이 하나도 잡히지 않을 수 있습니다. Python 표준 라이브러리의 ElementTree는 접두어가 붙은 태그를 {uri}태그 형태로 펼쳐 다룹니다(Python ElementTree 문서). 이 글의 합성 XML 검사도 {urn:synthetic-report}row처럼 URI를 붙여 행을 찾았습니다. 검사 코드가 행 수 0을 정상 결과로 받아들이면 실제 입력 오류가 합계 0으로 숨겨지므로, 행 수 0은 별도 실패로 기록해야 합니다. 이 규칙은 계약 문서의 빈 결과 조항과 함께 적으세요.
이 URI urn:synthetic-report는 합성 예시용 값이며 HWPX 네임스페이스로 제시하지 않았습니다.
다음에 읽을 것#
추출 결과를 CSV로 전달할 계획이라면 입력 형식과 집계 규칙도 확인하세요.
CSV 리포트 자동화에서 추출 이후의 컬럼 계약과 집계 검증 기준을 확인할 수 있습니다.
관련#
편집 메모 (2026-11-02): 형식·셀 대조 FAQ와 생성 단계의 진단표를 보충했습니다. 라이브러리 선정·라이선스·한컴 의존성, 실제 추출·템플릿·검증 및 원본 화면 증거는 아직 없습니다.
