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

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

どうも〜おかむーです!今天聊点偏工程师的东西,但我会尽量轻松讲~

  • 这篇报告基于各地开放数据目录(東京都・横浜市)、総務省与デジタル庁发布的机读化指引来分析
  • 结论是:有进步但碎片化严重,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里放出来,给社会一点想象力吧!