代码看清单:用工程视角解读自治体开放数据与DX

IT政策提案
代码看清单:用工程视角解读自治体开放数据与DX

どうも〜おかむーです!今天来点技术味的城市治理观察,咱们用代码和数据聊聊自治体的开放数据现状与改进路线~

  • 这篇文章以东京都政的开放数据目录与GovTech东京的实践为样本,讨论自治体数据的机器可读性和API化问题
  • 指出常见的PDF陷阱、CSV格式不一致、缺乏Schema和API等技术痛点,并给出可落地的工程方案
  • 最后提供示例代码片段、质量检测思路与小型自治体可采纳的最小可行流程

結論

多数地方自治体已经开始把数据发布出来了(参见東京都オープンデータカタログ、各市的CSV列表),但很多数据仍以PDF或非结构化格式发布,缺乏一致的Schema、稳定的API与機械可讀的メタデータ。要把开放数据变成真正的政策输入,需要把「公開」升级为「可用」:标准化CSV/JSON、提供REST/GraphQL API、自动化质量检查与明确的ライセンス标注。

レポート本文

現状観察:哪里做得还不错,哪里还卡着

これ見てくださいよ:東京都オープンデータカタログ(https://catalog.data.metro.tokyo.lg.jp/dataset)里确实有大量CSV与XLSX,这很棒!GovTech東京也在推动ダッシュボード体系化(参考:https://www.govtechtokyo.or.jp/services/data-utilization/)。一方で,很多自治体的历史文档、報告書仍然以PDF发布(不易机器解析),或在网页上直接展示表格但没有API可抓取。

参考事例:新潟市有一份针对CSV制作的マニュアル(CSVマニュアルPDF),函館市列出CSV数据集清单(harp.lg.jp),埼玉県データカタログ也在做目录化。这说明意识在,但落地细节参差不齐。

技术性问题点(按工程师角度说)

  • PDF优先:数据被锁在PDF里,解析成本高且不稳定。要么用OCR/Tabula抓表,要么放弃实时更新性。
  • CSV格式不统一:编码(UTF-8 vs Shift_JIS)、日期格式(YYYY/MM/DD vs YYYY-MM-DD)、分隔符、ヘッダ命名不一致,ETL很容易出错。
  • 缺乏Schema与メタデータ:没有字段定义、单位说明、更新频度等,API使用者无法自动校验。
  • API缺失或不稳定:许多自治体没有公开REST API,或API权限/レート限制不明确。
  • ライセンス不明瞭:有些站点没有CC等明示,二次利用法的法律风险增加。

具体的工程建议(可实施清单)

  • 优先把核心表格数据从PDF迁移为CSV/JSON,并统一UTF-8编码
  • 为每个dataset提供JSON Schema或CSVW描述文件(字段名、类型、単位、必須/任意、更新頻度)
  • 建立简单的HTTP API(REST或GraphQL),推荐采用已有のCKAN/データポータルソフトを活用
  • 在CI中加入データ品質チェック(行数阈值、NULL率、日付整合性、ユニット検証)
  • 明示ライセンス(CC-BY等)とAPIドキュメント(OpenAPI)を公開
  • 提供SAMPLE CSVとスキーマによる互換性保証
  • コード例:从开放目录抓CSV并做简单校验(Python)

    import requests
    

    import pandas as pd

    from io import StringIO

    url = 'https://catalog.data.metro.tokyo.lg.jp/dataset/xxxx/resource/yyy.csv' # 示例URL

    r = requests.get(url, timeout=10)

    r.encoding = 'utf-8'

    df = pd.read_csv(StringIO(r.text))

    简单校验

    assert 'date' in df.columns, '缺少date列'

    df['date'] = pd.to_datetime(df['date'], errors='coerce')

    print(df.isna().sum())

    要対PDF表格做自动化抓取的话,可以用tabula-py或camelot:

    import tabula
    

    dfs = tabula.read_pdf('report.pdf', pages='all', multiple_tables=True)

    不过长远讲,不应该靠PDF解析来做正经业务流程。

    指标化政策执行效果:怎样衡量「开放数据是否可用」

    建议自治体在绩效指标里加入几项可量化指标:

    • dataset_publish_rate:应公开数据集数与实际公开数比
    • machine_readable_rate:以CSV/JSON/API公开的数据占比
    • api_uptime:API可用率
    • freshness_days:数据平均更新延迟
    通过这些量化指标可以把“开放数据”纳入KPI体系,避免只是形式上的“公表”。要注意的是,这些数据点可以从オープンデータカタログ的metadata抓取(如果catalog提供updated_at字段的话)。

    小自治体的实际路径(最小可行プロダクト)

    • 阶段1:识别10个高价值表格,保证以CSV公开并UTF-8编码,附带README与License
    • 阶段2:用GitHub + GitHub Actions做データ发布CI(push触发转换与検証),并把CSV镜像到自治体サイト
    • 阶段3:使用轻量CKAN或Static JSON API暴露接口,提供OpenAPI文档
    • 阶段4:邀请市民/开发者进行ハッカソン,收集二次利用事例,反馈改善

    まとめ

    自治体のデータ公開は進んでいるが、公開形式と品質がバラバラで“利用可能性”に差がある。エンジニア的に言うと、API一本と標準スキーマがあれば大部分の利活用は劇的に楽になるんですよね。PDFはあとでやるとして、まずはCSV/JSONで一本化、SchemaとLicenseの明示、CIで品質担保をセットする——これが最速の実装プランです。

    おかむーから一言

    作为创业者和工程师,我一向相信「把东西做成API」的力量。テクノロジーで社会をアップデートするって、結局はデータをちゃんと使える形にするだけなんですよ!