食品科學教學課程 | 光譜 × 食品分析(化學計量學)
Spectroscopy × Chemometrics · 桌面工具

SpectraView

把儀器吐出的原始光譜,互動地「看清楚 → 前處理 → 分析 → 匯出 X-matrix」。 一個受 SpectraGryph 啟發、用 Python 寫的開源桌面工具,補上化學計量工作流最前段的那一哩路。

8檔案格式
10+前處理方法
6分析模組
GitHub 原始碼 → 下載與安裝
Where it fits

它在化學計量工作流的哪一段?

PCA / PLS / PLS-DA 的成敗,七成在「前處理」。SpectraView 就是把載入、前處理與檢視 這段做成所見即所得的桌面操作,再一鍵匯出乾淨的資料矩陣,交給 Orange 或 scikit-learn 建模。

① 儀器光譜FTIR / Raman / NIR / XRF 的原始檔(含散射、螢光、基線漂移)
② SpectraView載入·疊圖·座標軸換算·基線/SNV/微分·尋峰/擬合·XRF元素·庫比對·匯出 X-matrix
③ PCA / PLSOrange Data Mining 或 Python scikit-learn 建模
④ 解釋分群、定量、摻偽鑑別、產地溯源
🎓 三層教學的延伸:看影片建直覺 → 讀 Python 學算法 → 用 Orange 親手做, SpectraView 再加一層「用桌面工具親手把光譜整理乾淨」,學生看得到每一步前處理對光譜做了什麼。
Step 1 · Preprocessing

化學計量前處理:為什麼非做不可

同一批樣品,散射、基線與儀器漂移會讓 PCA 第一主成分整個被「物理雜訊」佔據。 下面每個前處理都對應一種要消除的干擾。

去螢光 / 散射背景

基線校正(airPLS)

Raman 的螢光背景、NIR 的散射斜坡會壓過真正的化學訊號。airPLS(Zhang 2010)自適應地把背景估出來扣掉,尖峰完整保留。另含 Rubberband、多項式、非對稱最小平方 ALS。

Process ▸ Baseline ▸ airPLS
airPLS 基線校正:藍色估計基線扣掉螢光背景,紅色校正後尖峰落在零線
NIR 必備的散射校正

SNV / MSC · 微分 · 正規化

粒徑與光程差造成的乘性散射,用 SNV(標準常態變量)或 MSC(多元散射校正)拉平;一階/二階微分(Savitzky-Golay)去基線漂移、凸顯重疊峰;正規化讓樣品可比較。這些正是 NIR/PLS 定量前的標準配方。

Process ▸ Scatter correction / Derivative
NeoSpectra NIR 反射率轉吸光度的多條光譜疊圖

▶ 互動:前處理 playground

同一條 NIR 光譜,點按鈕看每種前處理把它變成什麼樣子(在你瀏覽器即時計算)。
Step 2 · Analysis

光譜分析:從峰到成分

前處理之後,SpectraView 也能直接做定性與半定量分析——很多時候不必先進到化學計量就有答案。

重疊帶的定量

尋峰 · 峰形擬合 / 去卷積

自動尋峰(含 FWHM),再用 Gaussian / Lorentzian / Pseudo-Voigt 擬合,把重疊的吸收帶拆成各自的分量、算面積。食品脂肪的羰基(C=O)區就是典型例子。

Analyze ▸ Peak fit / deconvolution
羰基重疊帶被擬合拆成三個 Gaussian 分量,R²≈0.9997
元素指紋 · 摻偽與礦物質

XRF 元素鑑定

對 keV 能量軸的 XRF 譜尋峰,比對內建特徵譜線表(Kα/Kβ/Lα/Lβ,元素 Z=11–92),在圖上直接標出元素。食品礦物 K、Ca、Fe、Cu、Zn 一目了然——這正是 XRF 食品鑑別的入口。

Analyze ▸ Identify XRF elements
XRF 譜自動標出 K / Ca / Fe / Cu / Zn 等元素特徵線
NNLS

混合物濃度推算

以純物質參考譜,非負最小平方解 mixture ≈ Σ cᵢ·refᵢ,回推各成分比例與 R²。摻偽比例、調合油組成的快速估計。

Library

光譜庫相似度比對

自建 .speclib 參考庫,拿未知譜比對;命中清單同列相關係數、cosine、光譜角 SAM、歐氏距離,一鍵疊圖。

I/O

8 種格式 · 一鍵匯出矩陣

讀 ASCII / JCAMP-DX / SPC / OPUS / JSON / MATLAB;合併匯出可選「每列一樣品」的 X-matrix,直接餵 scikit-learn 的 PCA / PLS。

Pairs with

搭配這些化學計量課程一起用

先用 SpectraView 把光譜整理、看懂、匯出,再進到各技術的 PCA / PLS / PLS-DA 教學包親手建模。

NIR

近紅外 · PLS 定量

SNV/微分前處理 → PLS 預測脂肪含量(Tecator 肉品)。

FTIR

紅外 · PLS-DA 鑑別

即溶咖啡 Arabica vs Robusta;基線/微分後做判別。

XRF

X 射線螢光 · 元素指紋

蜂蜜元素表(CC0)即時實算真假與摻假鑑別。

Raman

拉曼 · 互動投影片

拉曼在食品分析的應用+形成性評量小遊戲。

Get it

下載與安裝

純 Python 桌面程式(PySide6 + pyqtgraph + numpy/scipy)。Windows / macOS / Linux 皆可。

完全沒裝過 Python?沒問題。下面是給 Windows 初學者的「零基礎」流程:先用 winget(Windows 10/11 內建的官方安裝工具,不必先裝任何東西)裝好 gitPython 3.12,再下載並啟動 SpectraView。已經有 git 與 Python 的人,直接跳到 步驟 ④

🪟 Windows 安裝

① 開啟 PowerShell

按鍵盤 ⊞ Win,輸入 PowerShell,按 Enter 開啟(不需要系統管理員身分)。

② 用 winget 安裝 git 與 Python 3.12
# winget 是 Windows 10/11 內建,照貼照執行就好
winget install -e --id Git.Git
winget install -e --id Python.Python.3.12
台灣的電腦要加什麼地區參數嗎?不用。winget install 與地區無關,上面的指令在台灣、任何語系的 Windows 都一樣可用,不需要TW 之類參數。若 winget 第一次跳出「Microsoft 使用合約/來源」提示,輸入 Y 再按 Enter 同意即可。兩個都裝完後,請關掉這個 PowerShell、重新開一個新的gitpython 指令才會生效。
③ 確認裝好了
git --version          # 出現 git version 2.xx 就 OK
python --version       # 出現 Python 3.12.x 就 OK
若打 python 後跳出 Microsoft Store(沒顯示版本):到「設定 ▸ 應用程式 ▸ 應用程式執行別名」,把 python.exe/python3.exe 的別名關掉;或改用 py -3.12 --version、之後啟動也用 py -3.12 run.py
④ 下載並啟動 SpectraView
# 取得程式碼
git clone https://github.com/Tai-ShengYeh/spectraview.git
cd spectraview

# 安裝相依套件(核心即可直接 pip install)
pip install -r requirements.txt

# 啟動
python run.py
沒有資料也能玩:開啟後選 File ▸ Load demo spectra 載入內建的 FTIR / Raman / UV-Vis / NIR / XRF 示範光譜,立刻試前處理與分析。讀取二進位儀器檔(SPC / Bruker OPUS)為選用功能,未安裝時會給清楚提示。

🍎 macOS 安裝(Mac 電腦)

Mac 完全沒裝過 Python?沒問題。下面是給 macOS 初學者的「零基礎」流程:先用 Homebrew(macOS 最常用的官方套件管理工具)裝好 gitPython 3.12,再下載並啟動 SpectraView。已經有 git 與 Python 3.10+ 的人,直接跳到 步驟 ④。適用 Apple 晶片(M1/M2/M3…)與 Intel Mac。
① 開啟「終端機」Terminal

⌘ Cmd+Space 開啟 Spotlight,輸入 Terminal(終端機),按 Enter 開啟。

② 安裝 Homebrew(若已安裝可略過)
# 貼上官方安裝指令,照畫面提示按 Enter/輸入登入密碼即可
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安裝完成後,若終端機提示要把 brew 加入 PATH(Apple 晶片的 Mac 常見),照著畫面最後那兩行 echo ... >> ~/.zprofileeval ... 指令貼上執行;或直接關掉終端機、重新開一個新的,再用 brew --version 確認可用。
③ 用 Homebrew 安裝 git 與 Python 3.12,並確認
brew install git python@3.12

git --version          # 出現 git version 2.xx 就 OK
python3 --version      # 出現 Python 3.12.x(或 3.10+)就 OK
macOS 請一律使用 python3pip3 指令(系統內建的 python 可能不存在或為舊版)。
④ 下載並啟動 SpectraView
# 取得程式碼
git clone https://github.com/Tai-ShengYeh/spectraview.git
cd spectraview

# 建議用虛擬環境,避免污染系統 Python
python3 -m venv .venv
source .venv/bin/activate

# 安裝相依套件
pip install -r requirements.txt

# 啟動
python run.py
下次要再開程式時,先 cd spectraviewsource .venv/bin/activate,然後 python run.py 即可。第一次啟動若 macOS 詢問鍵盤/螢幕錄製等權限,按一般 App 方式允許即可。

授權 MIT · 97 項自動測試(CI 於 Python 3.10 / 3.12 自動把關)。歡迎 issue 與 PR。