PDF 표를 엑셀로 정확히 추출하기: 셀 병합·숫자 인식 문제 완전 해결
매출표, 거래 내역서, 재무제표, 설문 집계표를 PDF로 받아 엑셀에서 다시 계산해야 하는 상황은 사무직이라면 매달 마주칩니다. 표를 손으로 옮겨 적는 건 시간 낭비일 뿐 아니라 숫자를 잘못 베끼는 휴먼 에러의 온상이기도 합니다. PDF에서 표만 골라 Excel로 옮기는 작업은 단순해 보이지만, 셀 병합이 깨지거나 숫자가 텍스트로 들어가 합계가 안 잡히는 문제 때문에 의외로 손이 많이 갑니다. 이 글은 표 추출이 어떻게 동작하는지, 왜 깨지는지, 그리고 상황별로 어떤 방법을 골라야 하는지를 실무 관점에서 정리합니다.
PDF가 표를 '표'로 저장하지 않는다는 사실
가장 먼저 이해해야 할 점은, PDF에는 엑셀처럼 '셀'이라는 개념이 없다는 것입니다. PDF는 본질적으로 종이를 흉내 낸 포맷이라, 화면에 보이는 격자선은 단순한 선(벡터 그래픽)이고, 칸 안의 글자는 그 선과 아무 관계 없이 특정 좌표에 찍힌 텍스트 조각일 뿐입니다. 다시 말해 사람 눈에는 표로 보여도, 파일 내부적으로는 '어떤 위치에 어떤 글자가 있다'는 정보만 흩어져 있습니다.
그래서 표 추출 도구가 하는 일은 사실상 추론입니다. 글자들의 x, y 좌표를 모아 같은 가로줄에 있는 것끼리 행으로, 비슷한 세로 위치에 정렬된 것끼리 열로 묶습니다. 격자선이 있으면 그 선을 경계로 삼아 칸을 나누고, 선이 없으면 글자 사이의 빈 공간(여백)을 기준으로 열을 추측합니다. 이 추론 과정을 이해하면, 왜 어떤 표는 완벽하게 변환되고 어떤 표는 엉망이 되는지가 자연스럽게 설명됩니다.
잘 인식되는 표 vs 깨지는 표
워드나 엑셀, 한글에서 만들어 그대로 PDF로 출력(인쇄)한 문서는 텍스트 레이어가 살아 있고 격자선도 또렷해서 인식률이 매우 높습니다. 반대로 종이를 스캔하거나 사진으로 찍은 PDF는 표 전체가 하나의 이미지일 뿐이라, 글자 좌표 자체가 존재하지 않습니다. 이 경우 OCR(광학 문자 인식)로 글자를 먼저 읽어내지 않으면 추출 도구가 가져올 데이터가 아예 없습니다.
- 잘 됨: 회계 프로그램·ERP에서 출력한 PDF, 워드/엑셀/한글에서 PDF로 저장한 문서, 격자선이 또렷하고 셀 병합이 거의 없는 표
- 애매함: 격자선 없이 여백으로만 칸을 구분한 표, 헤더가 여러 줄이거나 셀이 복잡하게 병합된 표
- 어려움: 스캔본·사진 PDF(텍스트 레이어 없음), 칸마다 줄바꿈이 들어간 셀, 페이지를 가로질러 이어지는 긴 표
가장 흔한 세 가지 함정과 해결법
1. 셀 병합이 풀리거나 엉뚱하게 합쳐진다
세로로 병합된 헤더(예: '구분'이 두 행을 차지)나 가로로 병합된 제목 행은 추출 도구가 가장 어려워하는 부분입니다. 병합 정보가 PDF에 명시적으로 없기 때문에, 도구는 빈 칸을 보고 '윗 셀 값을 이어받는 것'인지 '진짜 빈 값'인지 판단해야 합니다. 결과적으로 병합 셀이 한 칸으로 몰리거나, 반대로 값이 한 칸에만 들어가고 나머지가 비어버립니다. 실무에서는 변환 후 엑셀에서 빈 셀을 선택하고 위 값으로 채우는(Ctrl로 빈 셀만 선택 후 윗 셀 참조) 보정을 하거나, 헤더가 한 줄이 되도록 원본을 미리 단순화하는 편이 빠릅니다.
2. 숫자가 숫자로 인식되지 않는다
변환은 됐는데 SUM이 0으로 나오는 경우, 십중팔구 숫자가 '텍스트'로 들어간 것입니다. 원인은 대체로 천 단위 콤마(1,234), 통화 기호(₩, $), 회계식 음수 표기(괄호로 둘러싼 (1,500)), 그리고 눈에 안 보이는 공백입니다. 특히 한국 문서에서 자주 보이는 '전각 공백'이나 숫자 앞뒤 공백은 엑셀이 문자열로 취급하게 만드는 주범입니다.
- 콤마·통화기호: 엑셀 '바꾸기(Ctrl+H)'로 콤마와 기호를 제거하거나, VALUE()/NUMBERVALUE() 함수로 숫자 변환
- 괄호 음수: (1,500) 형태는 자동 인식이 안 되므로 -1500 형태로 바꿔야 계산됨
- 숨은 공백: TRIM()과 CLEAN()을 함께 적용해 앞뒤·전각 공백 제거
- 셀 좌측 상단 초록 삼각형(오류 표시)이 보이면 '숫자로 변환'을 일괄 적용
3. 열이 밀리거나 한 칸으로 뭉친다
격자선 없이 여백으로만 구분된 표에서 자주 일어납니다. 어떤 칸의 글자가 길어서 옆 칸 영역까지 침범하면 도구가 열 경계를 잘못 잡아, 두 열이 한 칸으로 합쳐지거나 데이터가 한 칸씩 밀립니다. 이럴 때는 변환 후 엑셀의 '텍스트 나누기(데이터 탭 → 텍스트 나누기)'로 구분 기호나 너비를 지정해 다시 쪼개는 방법이 효과적입니다. 원본을 다룰 수 있다면, 출력 단계에서 격자선을 넣어주는 것만으로 인식률이 크게 올라갑니다.
상황별 방법 비교: 무엇을 언제 쓸까
표 추출에는 정답이 하나가 아닙니다. 문서의 성격과 작업 빈도에 따라 적합한 도구가 다릅니다.
오피스 프로그램의 내장 기능
엑셀은 '데이터 → 데이터 가져오기 → PDF에서'(파워 쿼리) 기능으로 PDF 표를 직접 불러올 수 있습니다. 마이크로소프트 365 환경이라면 별도 설치 없이 쓸 수 있고, 한 번 연결해두면 원본이 바뀌어도 새로 고침으로 갱신된다는 장점이 큽니다. 다만 복잡한 병합 표에서는 미리 보기 단계에서 표 영역을 직접 골라줘야 하고, 인식 결과가 들쭉날쭉할 수 있습니다. 워드에 PDF를 열어 텍스트로 변환한 뒤 표만 복사하는 방법도 단순한 표에는 충분합니다.
웹 변환 도구
설치가 부담스럽거나 가끔 한두 건만 처리한다면 브라우저에서 업로드하고 받는 웹 도구가 가장 빠릅니다. 여러 페이지를 한 번에 처리하고 시트로 나눠주는 점이 편리합니다. 주의할 점은 보안입니다. 매출·급여·개인정보가 담긴 표라면 업로드한 파일이 서버에 얼마나 남는지, 처리 후 삭제되는지를 확인해야 합니다. 사내 규정상 외부 업로드가 금지된 자료는 오프라인 방법을 택하는 것이 안전합니다.
명령줄 도구로 자동화
매일 수십 건의 인보이스나 거래 내역서를 처리한다면 사람이 일일이 업로드하는 방식은 곧 병목이 됩니다. 이럴 때는 표 추출에 특화된 오픈소스 라이브러리(파이썬 진영의 표 추출 도구 등)나 변환 API를 스크립트로 묶어 폴더를 감시하고 자동 변환하게 만드는 편이 낫습니다. 한국어 문서를 다룬다면 OCR이 필요한 경우 한글 학습 데이터가 포함된 엔진을 쓰고, 표 구조 인식과 글자 인식을 분리해 단계별로 점검하면 디버깅이 쉽습니다. 아래는 변환 API를 호출하는 최소 예시입니다.
curl -X POST "https://your-domain/api/v1/office/pdf-to-xlsx" \
-H "X-API-Key: pk_live_..." \
-F "file=@statement.pdf" \
-o statement.xlsx한국어 문서에서 특히 신경 쓸 점
한글 PDF는 폰트 임베딩 문제로 글자가 깨지는 경우가 있습니다. 일부 PDF는 화면에는 한글이 멀쩡히 보여도, 텍스트를 복사하면 '□□□'나 의미 없는 기호로 추출됩니다. 이는 폰트가 비표준 인코딩으로 매핑돼 있기 때문으로, 이런 파일은 표 추출 전에 OCR을 거쳐 글자를 이미지 기반으로 다시 읽어내야 정상적인 텍스트를 얻을 수 있습니다. 또한 한국 회계 문서 특유의 표기 ─ 단위가 '천원'·'백만원'으로 적힌 머리말, 날짜의 '2026.06.23' 형식, 사업자번호의 하이픈 ─ 은 변환 후 엑셀에서 날짜·숫자 서식과 충돌할 수 있으니 가져온 직후 한 번 서식을 점검하는 습관이 좋습니다.
변환 전 점검 체크리스트
실패를 줄이려면 변환 버튼을 누르기 전에 원본부터 확인하는 것이 가장 효율적입니다. 다음을 순서대로 점검하면 대부분의 문제를 미리 걸러낼 수 있습니다.
- 이 PDF의 글자를 마우스로 드래그해 복사가 되는가? (안 되면 스캔본이므로 OCR 먼저)
- 표에 격자선이 그려져 있는가? (없으면 열 분리 오류를 각오)
- 헤더가 한 줄인가, 셀 병합이 심한가? (심하면 변환 후 보정 시간 확보)
- 숫자에 콤마·통화기호·괄호 음수가 섞여 있는가? (있으면 변환 후 일괄 정리 예정)
- 문서에 민감정보가 있는가? (있으면 외부 업로드 대신 오프라인 방법 검토)
- 표가 여러 페이지에 걸쳐 있는가? (있으면 시트 분리 후 이어붙이기 작업 예상)
정리
PDF 표 추출은 '완벽한 자동 변환'을 기대하기보다, 도구가 80~90%를 처리하고 사람이 마지막 보정을 맡는 협업으로 보는 편이 현실적입니다. 핵심은 세 가지입니다. 첫째, 스캔본인지 텍스트 PDF인지부터 구분할 것. 둘째, 변환 후 숫자가 진짜 숫자인지 검산할 것. 셋째, 셀 병합과 열 분리는 원본 단순화나 엑셀의 텍스트 나누기로 보정할 것. 이 흐름만 몸에 익히면 어떤 도구를 쓰든 실패율이 눈에 띄게 줄어듭니다. 작업 빈도가 낮으면 오피스 내장 기능이나 웹 도구로 충분하고, 매일 반복되는 정형 문서라면 API와 스크립트로 자동화하는 것이 장기적으로 시간을 가장 많이 아껴줍니다.