用代码说话的宣言:从数据与工程看政府/自治体的公开数据实务

IT政策提案
用代码说话的宣言:从数据与工程看政府/自治体的公开数据实务

どうも〜おかむーです!今天来聊点既技术又政策的事——用工程视角检验政府和自治体的数据发布与系统设计,按「コードで語るマニフェスト」来做。

  • 这篇文章会把公开数据的机器可读性、API 有无、CSV/PDF 问题、以及 KPI 的数值差距在工程层面拆解
  • 给出具体的代码示例和可执行的改进建议(CSV 拉取、编码处理、PDF 表格抽取、API 设计)
  • 目标是从「能被工程系统消化」的角度,提出可落地的 GovTech 改善路线图

結論

日本的各级政府已经开始把数据放出来(见 Digital庁、内閣官房等文档),但机器可读性与 API 化程度参差不齐。エンジニア的眼光看,这是典型的「人可读优先、机可读次之」问题。要让数据真正产生社会价值,必须把数据当成产品:标准化格式、明确 schema、稳定 API、版本管理、以及 KPI 自动化指标链路。

要点:

  • 立即可做:把 PDF 中的表格优先导出为 CSV/JSON,提供 OpenAPI 描述;对现有 CSV 明确编码(多为 Shift_JIS/UTF-8)并提供 schema
  • 中期改进:建立数据目录(DCAT)、API 速率/认证策略、数据质量监控与变更日志
  • 长期目标:为生成 AI 提供 "AI-ready" 数据集(内閣官房提到的方向),包括结构化、注释和许可信息

报告正文

现状速览:有哪些公开数据可用?这些数据长什么样

これ見てくださいよ:搜索结果里有很多 CSV 链接(例:NOTICE 的 NICTER CSV https://notice.go.jp/docs/status_nicter.csv、各省的 CSV 文件 https://www.jinji.go.jp/content/900024615.csv、環境省の CSV https://www.env.go.jp/content/900398071.csv 等)。这很好——数据确实在公开。但是:

  • 格式不统一:有的直接是 CSV,有的则把关键指标埋在 PDF(参见各类政策评估 PDF,如デジタル田園都市国家構想の評価資料)
  • 编码问题常见:日本政府数据有时采用 Shift_JIS,直接用 UTF-8 读取会乱码
  • 元数据缺失:缺少 schema、字段说明、更新频率、ライセンス信息

要するに:数据是有的,但对机器友好度不足,也缺乏 API 化。

機械可読性 & PDF vs CSV 的技术痛点

  • PDF 表格:人类可读但机器很难稳健解析。要么用 tabula/ Camelot/Adobe OCR,要么要求数据发布方直接提供 CSV/JSON。
  • CSV 的质量:常见问题包括缺少 header、字段类型不一致、日期格式不统一、编码不明示。
  • API 缺席:很多场景是把静态文件放到 Web 提供下载,没提供 REST API 或 OpenAPI 定义,集成成本高。

技术举例:如果要把某个政策的 KPI 从 PDF 变成可监控的时间序列,工程流程通常是:PDF -> 表格抽取(tabula/ocr)-> 清洗(pandas)-> 标准化(ISO 日期、统一单位)-> 写入时序 DB(Prometheus/Timescale)-> 可视化(Grafana)。

API 与数据工程建议(具体、可落地)

  • 发布机器可读的原始数据:尽量直接提供 CSV/JSON/NDJSON,标注编码(UTF-8 优先),并附上 schema(JSON Schema 或 CSV Schema)。
  • 提供 REST API:用 OpenAPI 描述,支持分页、过滤、按日期区间查询;对大型数据提供压缩 CSV/Parquet 下载。
  • 数据目录化:采用 DCAT 或 data.json 格式,列出数据集、更新频度、联系窗口、ライセンス。
  • 版本与变更日志:任何字段变更都记录在 changelog(Git-like 或 release notes),并提供向后兼容策略。
  • "AI-ready" 输出:内閣官房提到 AI-Ready 社会,需要结构化、注释良好的数据集(字段说明、キーID、ユニット、欠損率指标)。
  • 代码示例:拉取 CSV,处理编码与日期,导出 JSONL(可直接喂给 ML 管道)

    # 要点:考虑 encoding 检测、chunksize(大文件)、parse_dates
    

    import requests

    import chardet

    import pandas as pd

    from io import BytesIO

    url = 'https://notice.go.jp/docs/status_nicter.csv'

    resp = requests.get(url)

    raw = resp.content

    enc = chardet.detect(raw)['encoding'] or 'utf-8'

    df = pd.read_csv(BytesIO(raw), encoding=enc, parse_dates=['date'], dayfirst=False)

    标准化列名

    df.columns = [c.strip().lower().replace(' ', '_') for c in df.columns]

    导出 JSON Lines,方便 downstream

    with open('nicter.jsonl', 'w', encoding='utf-8') as f:

    for rec in df.to_dict(orient='records'):

    f.write(json.dumps(rec, ensure_ascii=False) + '\n')

    エンジニア的に言うと、這是一個 ETL 的最簡版:抓取 -> 檢測編碼 -> 解析 -> 清理 -> 導出。真實環境還要加 retry、監控、schema 驗證 (great_expectations)、與錯誤告警。

    KPI 与実績差距的工程化分析

    数字化补助金或交付金类文件(例:デジタル田園都市国家構想交付金の KPI 資料)通常会列 KPI 与実績。問題点常见于:

    • KPI 定義模糊(衡量口径不同)→ 自动化无法对齐
    • 数据更新滞后或仅年度汇总 → 无法做实时监控
    • 数据分散在多个 CSV/PDF → 合并成本高

    改进方案:把 KPI 作为「可查询的指标 API」来提供。示例做法:

    • 为每个 KPI 建立 time-series 端点 /kpi/{kpi_id}/timeseries
    • 每次更新都写入 immutable event log(append-only),保留历史
    • 提供 machine-readable metadata:测量口径、数据来源、置信区间

    开放データ到 AI 应用的路径

    Digital 庁的 Data for AI 方向(搜索结果有提到)意味着需要把政府数据整理成模型可消化的格式:

    • 结构化数据(CSV/Parquet/JSONL),注释字段语义
    • 文本类政策文件需要做 OCR + 段落/实体标注(NER)
    • 提供许可声明(商用/非商用),让民间企业安心训练模型

    此外,考虑发布小规模的“benchmark datasets”供研究者验证政策影响与模型能力。

    まとめ

    • 现在的公开数据量在增长,但工程友好度不足。PDF 仍是障碍,CSV 虽多却常缺乏 schema 与编码声明
    • 最优先做的事:把关键表格从 PDF 导成 CSV/JSON,明确编码与 schema,提供 OpenAPI
    • 中长期要建设数据目录、版本化与 KPI API,把数据当作产品来运维
    • 对于想做 GovTech 的工程团队:先从小批次 ETL + schema 验证做起,慢慢把人工清洗替换为自动化流水线

    おかむーから一言

    どうも〜おかむーです!テクノロジーで社会をアップデートするってのは口だけじゃ意味ないんですよ。コードで語るマニフェスト、まずは CSV を一本、API を一本公開するところから始めましょう!