← 網誌 · 把警政署每天公告的失物做成能查的地圖:品名藏在一句公文裡、地點只有文字

把警政署每天公告的失物做成能查的地圖:品名藏在一句公文裡、地點只有文字

掉了東西,第一個念頭是「會不會有人撿到、送去哪裡了」。警政署其實每天都把撿到的失物公告出來,也開放下載,只是它散在 34 個受理機關、只有純文字,連「撿到什麼」都要從一句公文裡挑出來。這篇把做成查詢工具的過程寫下來。

2026-09-09 作者 William Hsu

這篇講什麼
  1. 資料是公開的,只是沒人整理
  2. 「撿到什麼」不是一個欄位
  3. 地點只有文字,沒有座標
  4. 個資:來源已經遮罩,我們不還原
  5. 為什麼不接官方的查詢網站
  6. 有些來源,能抓不代表該抓
  7. 上線之後:同一份資料底下,其實有兩個檔
  8. 刻意不做的
  9. 說清楚它做不到的
全台失物招領地圖,藍點準到門牌、紅點到路段、灰點到行政區
把警政署每天公告的失物標到地圖上:藍點準到門牌或巷弄、紅點到路段、灰點只到行政區平均位置

資料是公開的,只是沒人整理

警政署在政府資料開放平臺上放了「警察機關失物招領網路公告數位批次檔案」(dataset 7317),一支 CSV,免金鑰直接下載,大約九萬筆,滾動保留最近六個月,採政府資料開放授權,可以商業利用。

它涵蓋的不只 22 個縣市警局,還有專業警察機關:

資料雖然公開,一般人要查自己掉的東西幾乎不可能——它分散、只有文字、又沒有一個好用的入口。把這 34 個機關、六個月、九萬筆合進同一個搜尋框,再標到地圖上,就是這個工具在做的事。

「撿到什麼」不是一個欄位

你會以為有一欄叫「物品名稱」,其實沒有。撿到什麼是包在一句公文裡的:

「拾得人拾獲:黑色皮夾一個、內有現金若干,請失主於公告期間六個月內攜帶本人印章及身分證件前來認領。」

真正有用的只有「拾得人拾獲:」和「,請失主」中間那一段。我用一條規則把它取出來,九萬筆裡 99.3% 取得乾淨,剩下不到 1% 是格式不照牌理的(例如整批清冊、句子被截斷),這些另外歸成一類,不硬猜。

取出來之後才談得上搜尋。你打「錢包」「悠遊卡」「手機」,比對的是這段物品名稱,不是整句公文。

地點只有文字,沒有座標

失物公告只有「拾得地點」文字,沒有經緯度。九萬筆裡:

我接上另一份開放資料——各縣市的門牌坐標——在本機離線比對,把有路名的地址換成座標,最後大約 95% 的紀錄畫得上地圖。定位不到縣市的,用受理警局名稱回推(航警局歸桃園、鐵路警察某分局歸該站所在地)。

地圖只畫點,不畫範圍圈。資料只有一個地點、沒有範圍,硬畫一個固定半徑的圈就是在假裝精確。這跟我做淹水、露營場工具時一樣:資料沒有的東西,畫面上就不要假裝有。

個資:來源已經遮罩,我們不還原

有 480 筆公告內容帶了遮罩過的姓名(像「張○菱」)。這是來源本來就去識別過的,我照原樣顯示,不還原、也不去交叉比對。整份資料沒有失主的任何聯絡方式——認領本來就得帶證件親自到受理單位,這點照實寫在資料頁。

為什麼不接官方的查詢網站

警政署自己有查詢網站,但那條路走不通:查詢要三個必填欄位(等於你要先知道答案才查得到),2025 年 7 月起還加了圖形驗證碼。這種設計不是給程式接的。所以我完全不碰網頁版,只用它每天輸出的那份 CSV——這本來就是開放資料的意義:官方把整包倒出來,怎麼呈現讓大家自己做。

有些來源,能抓不代表該抓

我查過能不能把其他交通場站的失物也收進來:北捷、中捷、高捷、桃捷、桃機、國道服務區都有沒有驗證碼的公開介面,可以收。

但也有絕對不碰的。高鐵的失物前端雖然直接吐一大包 JSON、很好抓,它的條款卻白紙黑字禁止重製散布;某百貨的隱私政策更是逐字禁止爬蟲與 AI 代理人。這種就算技術上抓得到,也不做。能不能抓,跟該不該抓,是兩件事。

上線之後:同一份資料底下,其實有兩個檔

這一段我一開始判斷錯了,照實寫。

某天發現網站上最新的失物停在 9 月 3 日,之後幾天都沒有新的。我第一個念頭是「警政署那邊暫停更新了」——政府資料晚個幾天很常見,我還去查了官方有沒有公告,沒有。

後來才知道不是這樣。data.gov.tw 這個資料集底下,其實掛了不只一個下載檔,兩個格式一模一樣:我們原本固定在抓的那一個,停在 9/3 沒再動;同一個資料集底下的另一個,卻好端端更新到當天。

我們的更新程式有個保護:發現「最新日期」沒往前推,就不拿這批可能殘缺的資料去蓋掉現有的。所以網站沒壞、也沒顯示錯的東西,只是停在 9/3。保護做對了,但它保護的是一份被我們自己抓錯來源的資料。

知道原因後,我沒有只是把網址換成另一個檔就算了——誰知道哪天換那個檔停掉。改成讓程式每次都去問 data.gov.tw:這個資料集現在有哪些檔?全部抓下來,比對日期,自動用最新的那一份。以後不管它換代號、停掉某一份、還是多開一份,都會自動切到最新,不會再默默停住。

順手也擋掉一個小狀況:資料裡偶爾有假日期,像 211360621530(民國 2113 年 60 月)。如果單純比大小,這種假未來日期會被當成「最新」,所以挑之前先做日期驗證,把它濾掉。

刻意不做的

說清楚它做不到的

工具本身在 lazetool.com/lost-found。

這篇文章寫的是本站實際的實作與量測。工具本身在老照片動起來與變老變年輕,都可以直接試。

← 上一篇同一個地點多出三十隻走失貓狗,深入調查之後,答案讓人意外

看其他文章