用代码检验政策:从自治体开放数据看「机器可读化」的差距

どうも〜おかむーです!今天聊点偏工程师的东西,但我会尽量轻松讲~
- 这篇报告基于各地开放数据目录(東京都・横浜市)、総務省与デジタル庁发布的机读化指引来分析
- 结论是:有进步但碎片化严重,PDF仍然是最大绊脚石,API与一致的schema才是下一步关键
- 我给出从提取PDF->标准化CSV->提供REST API的一套技术路线与代码示例
結論
自治体在开放数据量上增长明显(参见 portal.data.metro.tokyo.jp、data.city.yokohama.lg.jp),但机器可读性不均、metadata缺失与格式碎片化仍阻碍二次利用。要在政策层面实现「AI-Ready」目标(総務省/内閣官房相关文件指引),需要把"PDF转CSV并公开API"作为最低门槛,并定义统一的schema与目录服务。
レポート本文
現状观察(这些都可以去看一下)
- 東京都オープンデータカタログ(portal.data.metro.tokyo.lg.jp)提供CSV/GeoJSON,但条目描述不一致,metadata有缺失(例:数据集“説明がありません”)。
- 横浜市数据目录(data.city.yokohama.lg.jp)包含河川水位、保健等数据,格式混杂(CSV/XLSX/PDF)。
- 総務省发布了关于「機械判読可能な統計表の表記方法」の统一规则(soumu.go.jp)——这是政策基线,但落地还在进行中。
- デジタル庁与内閣官房的案例库强调民間利活用(digital.go.jp),但很多実際データはPDFで発表されている。
これ見てくださいよ:PDFに埋まってる表を機械で読むのは手間なんです!エンジニア的に言うと、PDFはビットマップや固定レイアウトであって、API一本で引けるリソースじゃないんですよね。
技術的問題点(要するにこういうことです)
- 機械可読性不足:PDFや画像が多い→OCRや表抽出が必要
- スキーマ不統一:同一種類のデータでも列名や単位が違う
- メタデータ欠如:更新頻度・ライセンス・列説明がないケース多数
- API欠落または断片化:REST/OGC/GraphQLのどれか統一されていない
数値目標と実績ギャップ
- 政府資料では「AI-Ready社会」に向けて機械可読化を推進(内閣官房資料),しかし現場の公開形式はまだ混在。結果:データ利活用の時間コストが跳ね上がる。
改善提案(実装レベルで)
1) 最低ライン: すべての表をCSV/JSONで公開、PDFは補助に限定
2) 共通スキーマ: デジタル庁推奨の自治体標準オープンデータセットに準拠(カラム名・データ型・単位を定義)
3) API層の提供: シンプルなRESTfulエンドポイント + ページネーション + OpenAPI仕様書
4) 自動化パイプライン: PDF→CSV→検証→公開のCIを構築
5) メタデータとカタログ: DCAT/CKAN互換のカタログを整備
コード示例(実務で使える小ネタ)
PDF表を自動で抜く簡単なPython例(pdfplumber + pandas):
import pdfplumber
import pandas as pd
with pdfplumber.open('report.pdf') as pdf:
tables = []
for page in pdf.pages:
for table in page.extract_tables():
df = pd.DataFrame(table[1:], columns=table[0])
tables.append(df)
all_df = pd.concat(tables, ignore_index=True)
all_df.to_csv('output.csv', index=False)
CSVをAPIで公開する簡単なFlask例:
from flask import Flask, jsonify, request
import pandas as pd
app = Flask(__name__)
DF = pd.read_csv('output.csv')
@app.route('/api/data')
def data():
page = int(request.args.get('page', 1))
per = int(request.args.get('per', 100))
start = (page-1)*per
return jsonify(DF.iloc[start:start+per].to_dict(orient='records'))
if __name__ == '__main__':
app.run()
データ品質チェックの手順
- JSON Schemaで列定義を作る(必須/型/単位)
- CIでCSVをバリデート(pytest + panderaなど)
- 更新時にハッシュ・差分を出して変更履歴を残す
活用提案
- リアルタイム性が必要な水位やセンサー系はWebSocket/Streamingを検討
- 観光/経済データはGIS結合でダッシュボード化(GeoJSON + Leaflet)
- 民間向けにサンプルデータ/SDKを用意して利活用障壁を下げる
まとめ
今の日本の自治体オープンデータ、量は増えてきているけど"使える"状態にはまだ差がある。政策目標(AI-Ready)に合わせるなら、PDFを減らしてCSV/JSON/APIを標準にすること、統一スキーマとメタデータ整備を当たり前にすることが最優先。技術的には自動化パイプラインとAPI提供でかなり改善できる。やれば出来るんですよ、実際。
おかむーから一言
作为创业者和工程师,我相信技术能让政府更有效率!别怕动手,把数据从PDF里放出来,给社会一点想象力吧!
信息来源
- https://ja.wikipedia.org/wiki/%E5%85%AC%E5%85%B1
- https://www.intec.co.jp/column/smartcity-08.html
- https://kotobank.jp/word/%E5%85%AC%E5%85%B1-494676
- https://www.digital.go.jp/resources/data_case_study_private
- https://www.city.izumisano.lg.jp/
- https://www.zhihu.com/question/290714454
- https://www.cas.go.jp/jp/seisaku/digital_gyozaikaikaku/data8/data8_siryou1.pdf
- https://www.zhihu.com/question/6430289390
- https://www.soumu.go.jp/menu_news/s-news/01toukatsu01_02000186.html
- https://www.zhihu.com/question/38923279
- https://catalog.data.metro.tokyo.lg.jp/dataset
- https://portal.data.metro.tokyo.lg.jp/
- https://catalog.data.metro.tokyo.lg.jp/dataset?_organization_limit=0&groups=c025&_groups_limit=0&res_format=CSV&q=&organization=t000029&tags=%E8%87%AA%E6%B2%BB%E4%BD%93%E6%A8%99%E6%BA%96%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88
- https://data.city.yokohama.lg.jp/dataset/
- https://www.city.akashi.lg.jp/soumu/j_kanri_ka/shise/opendata/index.html
相关报告

代码で語るマニフェスト:以香川县公共设施预约系统为例的技术与数据审视
以香川县公共设施预约系统为例,从API、数据格式与标准化角度检视自治体系统,给出可执行的技术改进方案与代码示例。

用代码说话的宣言:从机器可读性到API化,解读日本数字化政策的数据工程路径
从Digital庁到e-Stat,评估日本数位政策的数据交付形态,提出API化与工程化改进路线,附代码与验证示例。

コードで語るマニフェスト:日本政府データをエンジニア視点で検証する
政府のマニフェストをデータとコードで検証。PDF多用やAPI断片化を指摘し、e-StatやJapan Dashboardを例に具体的な改善案とコード例を提示します。