我用ChatGPT構建免費PDF編輯器,因為不信任它直接修改檔案——竟然成功了!
作者需要從掃描的黃色紙張樂譜PDF中去除背景色,但擔心ChatGPT非確定性修改會改變樂譜。於是讓ChatGPT生成一個確定性Python指令碼來處理PDF,最終高效完成任務,展示了AI的巧妙用法。
最近,我的妻子丹尼斯加入了教堂唱詩班,她有一副好嗓子,需要練習所有新歌。樂譜印在黃色紙張上,大約是一本平裝書的大小。她想把這些小冊子掃描成PDF,去除背景色,然後放大列印在8.5x11英寸的紙上,這樣她就不必戴著老花鏡看譜了。一天下午,她來找我,詢問如何去除黃色背景但保留樂譜本身,以便列印時不會浪費大量彩色墨水。如果直接黑白列印,灰色背景反而更難看,而且還會消耗大量墨水。她還打算將樂譜匯入PlayScore 2——一款能播放樂譜以便跟唱的應用程式,她擔心背景顏色會影響軟體識別。
我最初建議用Photoshop去除背景,但操作太繁瑣了:每張圖片都需要不同的滑塊設定,既煩人又耗時。於是,我建議她使用ChatGPT,她有一個ChatGPT Plus賬戶。我進行了測試,提示如“給我返回一個可下載的PDF,去除黃色背景並替換為白色”和“你做得對,但文本解析度太低,能重新生成全解析度的嗎?”這些測試有效,但ChatGPT會微妙地修改生成的PDF。我妻子擔心ChatGPT可能改變音符、歌詞或其他原始內容,她不想讀錯譜或練錯。ChatGPT和其他AI是“非確定性的”,意味著同樣的輸入可能會得到不同的結果。相比之下,演算法程式設計是確定性的,輸入總能預測輸出。
我在哈佛Python程式設計認證的最後專案中編寫過一個互動式影像管理工具,能夠進行類似Photoshop的變換並批次處理。我知道Python有合適的庫來完成妻子所需的任務,但我那周非常忙,沒有時間從頭編寫程式。但ChatGPT有無限的時間。於是我決定讓ChatGPT寫一個Python指令碼來去除顏色。我給出了以下提示:“編寫一個Python指令碼,讀取JPEG,將任何非灰色或黑色的畫素設為白色,儲存為名稱-decolor.jpg。允許略帶色調的灰色,以便彩色背景上的黑色文本能正確渲染。如果輸入是PDF,也能同樣處理,且支援多頁。”然後我就去廚房幫妻子準備晚餐。晚餐做好時,ChatGPT也完成了。
第一個版本需要安裝Pillow庫,之後就能順利執行了。使用方法很簡單:在命令列執行decolor_pdf.py,輸入一個PDF檔案,輸出背景色被去除的新PDF檔案。為了測試,我從紐約公共圖書館下載了一首Fats Waller的公共領域歌曲,這位爵士大師創作過幾部音樂劇。測試效果完美。
從這個經歷中,我學到了一些有用的教訓:如果你需要AI的幫助,不一定非要依賴非確定性的處理,有時可以讓它為你編寫一個基於可靠演算法的程式;你也不需要花大量時間設計介面,簡單的命令列工具就能完成任務;不要害怕用AI迭代改進規格,嘗試它生成的內容,然後要求調整和修復;Python功能強大,擁有大量庫,如果不確定用什麼,就用Python構建。
所以,如果你需要快速解決某個問題,試試讓ChatGPT為你編寫程式。它對我很有效,我既能給妻子提供一個可用的工具,又能同時幫她把烤雞拆骨。你是否曾因為擔心AI微妙地改變原始檔案而避免直接使用AI?歡迎在評論區分享你的經歷。