PDF 검사 결과 보고서를 Excel로 추출하는 방법
— 코딩 불필요
전국 환자 옹호 단체인 CLL Society는 혈액 검사 결과를 추적하기 위한 무료 Excel 템플릿을 제공합니다. CBC, 혈액 화학 검사, 면역글로불린 탭이 있으며, 시간에 따른 수치 변화를 자동으로 차트로 표시하고, 참고 범위를 벗어난 결과를 표시합니다. 세심하게 설계되었으며 실제 환자의 필요에서 비롯된 것이 분명합니다. 그러나 데이터 입력 방식은 40년 동안 스프레드시트에서 사용해 온 방식과 동일합니다. 검사 보고서 PDF를 열고 "Hemoglobin A1c" 옆의 값을 찾아 셀에 입력하는 것입니다. 다음 혈액 검사가 다른 검사 기관에서 이루어져 동일한 검사를 "HbA1c (%)"로 표기하고 보고서 형식이 다르다면, 값을 다시 찾아 다시 입력해야 합니다. 템플릿은 훌륭하지만, 데이터 입력이 병목 지점입니다.

핵심 요점
- 방금 입력한 숫자는 검사 장비가 혈액을 분석하는 순간 이미 디지털 데이터였습니다. 이 숫자는 데이터베이스와 이메일 서버를 통해 기계가 읽을 수 있는 데이터로 전달되었으며, 전체 과정에서 자동화되지 않은 유일한 단계는 PDF에서 스프레드시트로 옮기는 여러분의 손가락뿐입니다.
- 검사 기관을 바꾸는 순간 템플릿 추출은 실패합니다. Quest Diagnostics는 검사를 "Hemoglobin A1c"로 표기하는 반면 LabCorp는 "HbA1c (%)"로 표기하기 때문에, 의미가 아닌 정확한 문자열 일치에 의존하는 도구는 두 번째 검사 기관의 데이터를 만나는 즉시 빈 셀을 생성합니다.
- ImageToTable.ai는 표기 규칙과 관계없이 각 검사명의 의미를 이해하여 검사 값을 읽습니다. "HbA1c (%)", "A1C", "Glycohemoglobin"은 모두 동일한 열에 입력되며, 사용자의 역할은 숫자 재입력에서 검증으로 바뀝니다.
환자들이 여전히 검사 결과를 손으로 입력하는 이유
CLL Society의 Excel 템플릿은 예외적인 사례가 아닙니다. Barth Syndrome Foundation도 검사 수치를 추적하기 위한 자체 스프레드시트를 배포하며, 그 안내문에는 관련 작업량을 인정하는 내용이 포함되어 있습니다: "날짜와 결과별로 필터링할 수 있는 검사 결과 스프레드시트를 유지하십시오." Reddit의 r/QuantifiedSelf 커뮤니티에서는 혈액 검사 추이를 시간순으로 그래프로 표시할 수 있는 도구를 정기적으로 요청합니다. 환자 커뮤니티, 만성 질환 옹호 단체, 건강에 관심이 많은 개인 모두 동일한 작업 흐름을 사용합니다: 검사실에서 PDF를 받아 스프레드시트 옆에 열고 입력하는 것입니다. 이것이 보편적인 이유는 유일한 무료 옵션이기 때문입니다.
문제는 스프레드시트가 아닙니다 — 스프레드시트는 제대로 작동합니다. 문제는 PDF와 스프레드시트 사이에 있는 것입니다: 사람이 페이지에서 수치를 읽고 셀에 입력하는 과정입니다. 분기별 채혈에서 5가지 바이오마커를 추적하는 환자의 경우, 연간 20개의 수치입니다. 입력에는 보고서당 2분이 걸립니다. 실제 불만은 시간이 아니라 — 데이터가 이미 디지털이라는 사실입니다. 검사실은 기계에서 데이터를 생성했습니다. 데이터베이스로 전송되고, 보고서로 형식화된 후 PDF로 이메일 전송되었습니다. 전체 체인에서 유일하게 디지털이 아닌 단계는 PDF에서 추적 시트로 옮기는 단계입니다.
하지만 이 단계를 자동화하는 것은 생각보다 어렵습니다. 검사 보고서는 청구서가 아니기 때문입니다.
업체 A의 청구서와 업체 B의 청구서에는 모두 품목, 합계, 날짜가 있습니다 — 구조가 대체로 유사합니다. 그러나 Quest Diagnostics의 검사 보고서와 지역 병원의 검사 보고서는 구조적 공통점이 거의 없습니다. 검사 이름은 1열이나 3행에 있을 수 있습니다. 수치는 이름 옆이나 아래에 있을 수 있습니다. 참고 범위는 같은 줄의 괄호 안에 있거나 오른쪽으로 3인치 떨어진 별도의 열에 있을 수 있습니다. 그리고 당화혈색소(Hemoglobin A1c)의 라벨은 "Hemoglobin A1c," "HbA1c," "A1C," 또는 "Glycohemoglobin"일 수 있습니다 — 같은 도시 안에서도 모두 같은 검사를 의미합니다.
실제로 추적하는 항목 — 검사명, 수치, 단위, 참고 범위

검사 보고서에는 필요한 것보다 더 많은 정보가 포함되어 있습니다. 환자 인적 사항, 처방 의사, 검체 채취 시간, 검사실 인증, 검사 방법 메모 — 이 모든 것은 보고서의 무결성에는 관련이 있지만, 개인 추적 스프레드시트에는 관련이 없습니다. 실제로 필요한 것은 다섯 개의 열로 정리됩니다:
검사일 | 검사명 | 결과 수치 | 단위 | 참고 범위보고서의 다른 모든 항목 — 환자 주소, 검사실의 CLIA 번호, 검사 담당자의 이니셜 — 추적 목적에서는 잡음에 불과합니다. 위의 다섯 개 열이 핵심입니다. 그리고 가장 안정적으로 추출하기 어려운 항목은 검사명입니다. 검사실마다 같은 검사를 다르게 표기하기 때문입니다.
Quest Diagnostics의 지질 검사 패널에는 "Cholesterol, Total", "Triglycerides", "HDL Cholesterol", "LDL Cholesterol (Calculated)"로 표기됩니다. 같은 패널을 LabCorp에서는 "CHOL", "TRIG", "HDL-C", "LDL-C"로 표기할 수 있습니다. 병원 검사실에서는 "Total Cholesterol", "Triglyceride", "HDL", "LDL"로 인쇄할 수도 있습니다. 수치는 같은 숫자입니다. 라벨은 다른 문자열입니다. 템플릿 기반 추출 도구가 LabCorp 보고서에서 "Cholesterol, Total"을 찾으려 하면 아무것도 반환하지 않습니다 — 템플릿에게 "CHOL"은 "Cholesterol, Total"이 아니기 때문입니다. 두 라벨의 의미를 모두 이해하는 사람에게만 같은 것일 뿐입니다.
이것이 환자 커뮤니티가 여전히 수동 Excel 템플릿을 배포하는 이유를 설명하는 핵심 과제입니다. 기존 무료 도구로 자동 추출이 쉬웠다면, CLL Society는 환자에게 직접 입력하도록 요구하는 스프레드시트를 배포하는 대신 그 도구를 링크했을 것입니다.
열 이름 추출이 모든 검사실 형식을 읽는 방법

서로 다른 검사실 보고서에서도 작동하는 방식은 열 이름 추출입니다. 도구에 각 값이 페이지의 어디에 있는지 알려주는 대신, 원하는 정보가 무엇인지 알려주면 도구가 라벨의 의미를 이해하여 일치하는 데이터를 찾습니다. 스프레드시트 헤더가 될 열 이름을 도구에 입력하면 됩니다:
Test Date | Hemoglobin A1c (%) | Fasting Glucose (mg/dL)
Total Cholesterol (mg/dL) | HDL Cholesterol (mg/dL) | LDL Cholesterol (mg/dL)
Triglycerides (mg/dL) | TSH (mIU/L) | Vitamin D (ng/mL)AI가 Quest 보고서를 처리할 때 왼쪽 열에 인쇄된 "Hemoglobin A1c"를 보고 해당 값을 추출합니다. LabCorp 보고서를 처리할 때는 "HbA1c (%)" — 다른 문자열, 같은 의미 — 를 보고 동일한 열에 매핑합니다. 검사 항목을 "糖化血红蛋白"(중국어)으로 표기한 병원 보고서를 처리할 때도 AI는 의미적 동등성을 이해합니다. 사용자가 정의한 열 이름이 표준 라벨이 되며, 각 검사실이 어떻게 표현하든 AI가 매핑을 처리합니다.
이 방식은 각 검사실의 보고서 레이아웃에 맞춰 별도의 템플릿을 구성해야 하는 템플릿 기반 추출과 정반대입니다. 또한 페이지의 모든 텍스트를 숫자가 어떤 검사에 속하는지 이해하지 못한 채 그대로 제공하는 원시 OCR과도 반대입니다. 열 이름 추출은 요청한 값만 정확히, 이름을 지정한 열에 맞춰 정리하여 제공합니다.
출력 결과는 각 행이 보고서 하나 — 채혈 한 번, 날짜 하나 — 를 나타내고 각 열이 바이오마커 하나를 나타내는 Excel 파일로 제공됩니다. 날짜별로 정렬하면 6개월간의 HbA1c 추이를 확인할 수 있습니다. Total Cholesterol 열에서 꺾은선 차트를 만들 수 있습니다. 조건부 서식 규칙으로 참조 범위를 벗어난 값을 표시할 수 있습니다. 스프레드시트는 생성되는 순간부터 분석에 적합한 구조로 제공되며, 한 시간 동안 다시 포맷할 필요가 없습니다.
임상 연구에서 EHR 검사실 패널을 다루는 연구자라면 — 플래그 값 추출, 다중 방문 기록 구분, 시스템별 형식 처리 포함 — EHR 스크린샷에서 검사실 값 추출 가이드를 참조하세요. 단일 연구에서 혼합 문서 유형을 다루는 경우 방사선, 병리, 퇴원 기록에서 변수 추출에서 다중 소스 기록 처리 방법을 다룹니다. 단위, 참조 범위, 이상 플래그, 클리닉 규모의 일괄 처리까지 포함한 전체 가이드는 검사실 보고서 데이터 추출 완전 가이드를 참조하거나, 여러 환자의 결과를 한 번에 정리해야 한다면 소규모 클리닉의 환자 검사 결과 일괄 정리 방법을 확인하세요.
여러 보고서를 한 번에 처리 — 1년치 혈액 검사 결과를 하나의 배치로

열 이름 지정 방식은 여러 보고서를 함께 처리할 때 그 가치가 더욱 커집니다. 만성 질환을 관리하는 환자는 1년에 혈액 검사를 서너 번 받을 수 있으며, 매번 다른 검사 기관이나 같은 검사 네트워크의 다른 지점에서 받을 수 있습니다. 보고서는 1년치에 해당하지만 단일 배치로 처리하는 데는 몇 분밖에 걸리지 않습니다.
분기별 PDF 4개를 한 번에 업로드하세요. AI는 각 보고서를 독립적으로 읽습니다 — 1월 Quest 보고서, 4월 LabCorp 보고서, 7월 병원 검사실 보고서, 10월 Quest 보고서 — 그리고 모든 결과를 동일한 열 집합에 매핑합니다. 출력은 채혈 날짜별로 4개의 행이 있는 스프레드시트 하나와 사용자가 정의한 생체지표 열로 구성됩니다. 파일 간 복사하여 붙여넣기할 필요가 없습니다. 서로 다른 열 순서를 맞출 필요도 없습니다. 추출 과정에서 정규화가 처리됩니다.
검증 단계는 대부분의 문서 유형보다 여기서 더 중요합니다. 잘못 입력된 청구서 합계는 50달러짜리 오류입니다. 잘못 입력된 검사 수치는 약물 조정이 필요한 추세를 놓칠 수 있음을 의미합니다. 추출 후 원본 PDF와 스프레드시트를 대조하세요 — 스프레드시트의 HbA1c 값이 보고서의 값과 일치하는지, 단위(%, mg/dL, mIU/L)가 올바른지, 참고 범위 경계 부근의 값이 서로 바뀌지 않았는지 확인하세요. 이 검증은 보고서당 1분 미만이 소요되며 인간의 판단이 워크플로우에 필요한 지점입니다. AI가 입력 작업을 없애고, 검증이 정확성을 보장합니다.
AI가 검사 결과지로 할 수 있는 일과 할 수 없는 일
검사 결과지 추출에는 분명히 짚고 넘어가야 할 한계가 있습니다.
값을 추출할 뿐, 해석하지 않습니다. AI는 "TSH: 4.8 mIU/L"을 읽고 TSH 열에 4.8을 입력합니다. TSH 4.8이 경계성 상승인지, 이전 수치가 2.1이었는지는 알려주지 않습니다. 해석은 환자와 의사의 몫입니다. 스프레드시트는 그러한 해석을 위한 원자재입니다. 일관된 형식으로 정확하게 옮겨 적어 분석할 준비가 된 상태입니다.
스캔 품질이 정확도에 영향을 줍니다. 검사실의 LIS(검사정보시스템)에서 직접 생성된 선명한 PDF는 매우 신뢰할 수 있는 추출 결과를 제공합니다. 스캔한 출력물, 특히 팩스로 보내고 인쇄한 뒤 다시 스캔한 경우에는 특정 값의 정확도를 떨어뜨리는 인공물이 생길 수 있습니다. 가장 영향을 받기 쉬운 숫자는 소수점이 있는 값(쉼표로 흐릿해질 수 있음)과 매우 작은 글씨로 인쇄된 값(밀집된 대사 패널에서 흔함)입니다. 검증 중 값이 이상해 보이면 원본과 대조해 보십시오.
의사의 검토를 대체하지 않습니다. 검사 수치는 맥락 속에서 의미를 갖습니다. 나이, 복용 중인 약물, 증상, 병력이 모두 특정 수치의 의미에 영향을 줍니다. 추출 후 스프레드시트로 차트를 만드는 것은 의료 진료를 보완하는 것이지 대체하는 것이 아닙니다. 자동 추적의 가치는 진료 사이에 데이터에 접근할 수 있게 한다는 점입니다. 문제가 되기 전에 추세를 볼 수 있고, 다음 진료 때 추측이 아닌 데이터를 가져갈 수 있습니다.
FAQ
AI가 검사 보고서에 손으로 쓴 메모를 읽을 수 있나요?
네, 합리적인 범위 내에서 가능합니다. 의사가 여백에 "3개월 후 재검"이라고 적었다면, 해당 항목에 대한 열을 정의하면 AI가 이를 별도의 메모 필드로 추출할 수 있습니다. 그러나 손으로 쓴 검사 결과 — 인쇄된 것이 아니라 전부 손으로 작성된 보고서 — 는 인쇄된 보고서보다 신뢰도가 낮습니다. 비전 모델은 손글씨를 읽을 수 있지만 정확도는 가독성에 달려 있으며, 의료용 손글씨는 가독성으로 유명하지 않습니다. 추적 목적을 위해 가능하면 의료기관에 인쇄된 결과 사본을 요청하세요.
검사 기관마다 다른 열 이름을 사용해야 하나요?
아니요. "헤모글로빈 A1c (%)", "TSH (mIU/L)", "비타민 D (ng/mL)" 같은 열 이름을 한 번만 정의하면 AI가 각 검사 기관의 라벨을 자동으로 해당 열 이름에 매핑합니다. 열 이름이 표준 라벨 역할을 하며, AI는 서로 다른 검사 기관이 동일한 검사를 설명하는 방식의 차이를 처리합니다. 따라서 언제든 새 검사 기관이나 새 보고서 형식을 추가해도 재구성할 필요가 없습니다.
영어 외의 언어로 작성된 검사 결과는 어떻게 하나요?
AI는 모든 언어의 검사 보고서를 읽습니다. 중국어 병원 보고서에 "空腹血糖"(공복 혈당)이 나열되어 있으면 정의한 "Fasting Glucose (mg/dL)" 열에 매핑됩니다. 추출은 서로 다른 영어 약어를 정규화하는 것과 같은 방식으로 언어 간 차이를 정규화합니다 — 문자를 일치시키는 것이 아니라 라벨의 의미를 이해하는 방식입니다.
PDF가 아닌 이미지 형태의 검사 보고서에서도 데이터를 추출할 수 있나요?
네. 스마트폰으로 촬영한 인쇄된 검사 보고서 사진 — 또는 환자 포털 결과의 스크린샷 — 은 PDF와 동일한 방식으로 처리됩니다. 비전 모델은 별도의 OCR 단계 없이 이미지에서 텍스트를 직접 읽습니다. 최상의 결과를 얻으려면 조명이 좋은 상태에서 정면으로 촬영하고 값이 선명하게 보이도록 하세요. 결과 섹션에 맞춰 자르면 도움이 되지만 필수는 아닙니다.
가족 구성원의 검사 결과를 추적하는 데 적합한가요?
네. 노부모나 만성 질환을 앓는 자녀의 건강 관리를 담당하는 경우에도 동일한 워크플로우가 적용됩니다: 검사 PDF를 모으고, 중요한 바이오마커를 정의하고, 일괄 업로드하고, 추적용 스프레드시트를 받으세요. 여러 가족 구성원의 보고서를 함께 처리할 때 Patient Name 열이 누구의 결과인지 구분해 줍니다. 작년 크레아티닌 수치가 1.1이었는지 1.3이었는지 기억하려고 전문의 진료실에 앉아 본 적이 있는 사람이라면, 실제 값이 담긴 스프레드시트 — 기억이 아닌 추출된 값 — 가 대화의 질을 바꿔 놓습니다.