본문 바로가기

Programming/Python

[Python] pydicom 다이콤파일 헤더 한글 깨짐 현상

흔히 의료영상에서는 다이콤(DICOM,  Digital Imaging and Communications in Medicine) 포맷을 사용합니다. 

 

이때 다이콤 파일의 경우에는 헤더에 환자의 다양한 정보를 포함하고 있습니다. 

다이콤 파일 속에 포함하는 헤더 정보는 아래에서 확인할 수 있습니다. 

 

https://www.dicomlibrary.com/dicom/dicom-tags/

 

DICOM Library - Anonymize, Share, View DICOM files ONLINE

 

www.dicomlibrary.com

다이콤 헤더에 포함하고 있는 다양한 환자 정보 중 일부

 

 

한국에서는 한글이름을 사용하는데, 이 때 경우에 따라

  1. 한글이름을 영문으로 작성해두는 경우와
  2. 한글이름을 한글로 작성해두는 경우

가 있을 수 있습니다. 

 


다이콤 파일을 불러오기 위해서는 일반적으로 pydicom 라이브러리를 많이 사용합니다. 

이 때 영문으로 작성해둔 경우는 문제가 없을 수 있으나, 다이콤 헤더에서 한글로 작성된 내용 같은 경우에는 그냥 불러오게 될 경우 아래와 같이 글자가 깨져서 출력되는 경우가 있습니다. 

 

코드

import pydicom

# DICOM 파일 읽기
file_path = './dcm_file.dcm'
ds = pydicom.dcmread(file_path)

# 환자명 읽기
patient_name = ds[0x0010, 0x0010].value
print(patient_name)

 

출력 결과 

 

ㅠㅠ


따라서 이러한 문제를 해결하기 위해서는 pydiom 에서 파일을 읽어 들일 때 encoding  인수를 사용하여 인코딩을 지정할 수 있습니다. 

 

아래는 이러한 과정을 보여주는 예제 코드입니다. 

 

import pydicom

# DICOM 파일 읽기
file_path = './dcm_file.dcm'
ds = pydicom.dcmread(file_path, force=True)

# 한글 인코딩 
encodings = ['euc-kr']

# 환자명 읽기
# patient_name = ds[0x0010, 0x0010].value.decode(encodings[0]) # 같은 방법, index 16진수이므로 0x 붙여서 불러오기
patient_name = ds.PatientName.decode(encodings[0])
print(patient_name)

 

이 후 같은 파일을 다시 불러와 보면 한글이름이 정상적으로  변경된 것을 확인할 수 있습니다. 

 

출력 결과