flowchart TD
Start([開始]) --> GetInfo[獲取 CallBackData 並轉為 ScanInfo 指針]
GetInfo --> AssignDIB[將 DIB 句柄轉為影像對象並設定 DPI]
AssignDIB --> FormatCheck{檢查影像格式}
FormatCheck -- 黑白 (ifBlackWhite) --> BWProc[條碼辨識, 旋轉, 反向, 去偏斜, 清黑邊]
FormatCheck -- 全彩 (ifTrueColor) --> ColorProc[設定 JPEG 壓縮品質與條碼辨識旋轉]
FormatCheck -- 灰階 (ifGray256) --> GrayProc[設定 JPEG 壓縮品質與條碼辨識旋轉]
BWProc --> CropCheck{檢查是否需 A3 切割為 A4?}
ColorProc --> CropCheck
GrayProc --> CropCheck
CropCheck -- 是 --> PerformCrop[執行影像切割為第一與第二部分]
CropCheck -- 否 --> SingleImg[直接處理原始影像]
PerformCrop --> LoopPages[對每一部分進行迴圈處理]
SingleImg --> LoopPages
LoopPages --> BlankCheck{是否刪除空白頁?}
BlankCheck -- 否/非空白 --> SaveProc[呼叫 PageEnd 決定路徑檔名並儲存檔案]
BlankCheck -- 是空白 --> NextPage[處理下一部分]
SaveProc --> CallPageDone[呼叫 PageDone 更新 UI]
CallPageDone --> NextPage
NextPage --> LoopEnd{所有部分處理完畢?}
LoopEnd -- 否 --> LoopPages
LoopEnd -- 是 --> FreeRes[釋放資源] --> End([結束])