การแปลงไฟล์ `.pdf` เป็นไฟล์ `.dicom` (Digital Imaging and Communications in Medicine) เป็นกระบวนการที่ค่อนข้างเฉพาะทาง เพราะ `.dicom` เป็นฟอร์แมตเฉพาะสำหรับภาพทางการแพทย์ เช่น X-ray, CT, MRI และมี metadata ทางการแพทย์ (เช่น ชื่อผู้ป่วย วันเวลา เครื่องที่ใช้ ฯลฯ) ซึ่ง `.pdf` ไม่ได้มีข้อมูลเหล่านี้อยู่โดยตรง
อย่างไรก็ตาม ถ้าเป้าหมายของคุณคือ:
---
### ✅ **แปลงภาพจาก PDF ไปเป็น DICOM (เช่น รายงานผลหรือรูปสแกนใน PDF ที่อยากเก็บในระบบ PACS)**
สามารถทำได้โดยแปลงเป็นภาพก่อน แล้วนำไปสร้างเป็น DICOM ดังนี้:
#### ขั้นตอน:
1. **แปลง PDF เป็นภาพ (PNG หรือ JPEG):**
* ใช้โปรแกรมอย่าง:
* `pdf2image` (Python)
* Adobe Acrobat (Export As Image)
* Online tools เช่น [pdf2jpg.net](https://pdf2jpg.net/)
2. **นำภาพไปแปลงเป็น DICOM:**
* ใช้เครื่องมือ เช่น:
* **GDCM (Grassroots DICOM)** – เครื่องมือใน command line:
```bash
img2dcm input.jpg output.dcm
```
* **DCMTK (OFFIS DICOM Toolkit)** – ใช้ `img2dcm`
* **Python + pydicom**:
```python
import pydicom
from pydicom.dataset import Dataset, FileDataset
from PIL import Image
import numpy as np
import datetime
# Load image
img = Image.open("input.jpg").convert("L") # Grayscale
np_img = np.array(img)
# Create DICOM dataset
file_meta = pydicom.Dataset()
ds = FileDataset("output.dcm", {}, file_meta=file_meta, preamble=b"\0" * 128)
ds.Modality = 'OT' # Other
ds.PatientName = 'Test^Patient'
ds.PatientID = '123456'
ds.StudyInstanceUID = "1.2.3.4"
ds.SeriesInstanceUID = "1.2.3.4.1"
ds.SOPInstanceUID = "1.2.3.4.1.1"
ds.SOPClassUID = pydicom.uid.SecondaryCaptureImageStorage
ds.is_little_endian = True
ds.is_implicit_VR = True
ds.PixelData = np_img.tobytes()
ds.Rows, ds.Columns = np_img.shape
ds.save_as("output.dcm")
```
---
### ❌ สิ่งที่ไม่สามารถทำได้โดยตรง:
* ไม่สามารถแปลง `.pdf` ที่เป็นข้อความหรือรายงานเฉย ๆ เป็น `.dicom` ที่สมบูรณ์ได้โดยตรง เพราะ DICOM ต้องการข้อมูลภาพและ metadata เฉพาะ
-----------------------------------------