흔히 의료영상에서는 다이콤(DICOM, Digital Imaging and Communications in Medicine) 포맷을 사용합니다.
이때 다이콤 파일의 경우에는 헤더에 환자의 다양한 정보를 포함하고 있습니다.
다이콤 파일 속에 포함하는 헤더 정보는 아래에서 확인할 수 있습니다.
https://www.dicomlibrary.com/dicom/dicom-tags/
한국에서는 한글이름을 사용하는데, 이 때 경우에 따라
- 한글이름을 영문으로 작성해두는 경우와
- 한글이름을 한글로 작성해두는 경우
가 있을 수 있습니다.
다이콤 파일을 불러오기 위해서는 일반적으로 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)
이 후 같은 파일을 다시 불러와 보면 한글이름이 정상적으로 변경된 것을 확인할 수 있습니다.
출력 결과