回心誌

日々是回心

【働き方改革】忙しい政府職員のために自動で文書を黒塗りにするプログラムつくった

mainichi.jp

報道によると、文書の黒塗りで忙しくて手が回らないそうだ。
文書を自動で黒塗りにするプログラムをつくった。

昨今は技術が進歩し、画像からテキスト情報を抽出することもできるようになっている。こうした情報技術を駆使して働き方を見直そうという機運が高まり、業務を自動化するRPA(Robot Process Automation)というワードが注目されている。
優秀、有能な官僚職員の皆様が不毛な作業に従事することのないよう力になろうと思い、黒塗りを自動化するツールを作った。

報道によれば、今回の作業範囲は数百ページにも及ぶという。
機械でやるにしても一瞬というわけにはいかないだろうが、かなりの省力化が期待できるのではないだろうか。


なお、黒塗りの範囲は人工知能が高度なアルゴリズムに基づいて自ら判断して決定する。
文書中に名前が書かれている政治家の皆様も、ぜひご安心いただきたい。


例1:
処理前
f:id:interferobserver:20180517210215p:plain

処理後
f:id:interferobserver:20180517210237p:plain


例2:
処理前
f:id:interferobserver:20180517211707j:plain

処理後
f:id:interferobserver:20180517211719j:plain


例3:
処理前
f:id:interferobserver:20180517233113j:plain

処理後
f:id:interferobserver:20180517233131j:plain


若干塗りが漏れていると思われるような箇所もあるが、決して漏れとかではなく、高度な人工知能の判断によるものであるため、安心していただきたい。


必要モジュール等:


ソースコード

from PIL import Image, ImageDraw
import sys
import os
import pyocr
import pyocr.builders
import argparse

tools = pyocr.get_available_tools()
tool = tools[0]
color = (0,0,0)

def get_lines(im):
    lines = tool.image_to_string(
            im, lang="jpn",
            builder=pyocr.builders.LineBoxBuilder()
            )
    return lines

def kuronuri(draw, pos):
    draw.rectangle((pos[0][0], pos[0][1], pos[1][0], pos[1][1]),
            fill=color, outline=color)

if __name__=='__main__':
    import time
    stime = time.time()
    p = argparse.ArgumentParser()
    p.add_argument("input")
    p.add_argument('-o', '--output')
    args = p.parse_args(sys.argv[1:])

    img_path = args.input
    print("Input file:", img_path)

    if args.output=="" or args.output==None:
        root, ext = os.path.splitext(img_path)
        img_path_out = root + "_kuronuri" + ext
    else:
        img_path_out = args.output
    print("Text has been detected.")

    im = Image.open(img_path)
    if im.mode!="RGB":
        im = im.convert("RGB")
    lines = get_lines(im)
    draw = ImageDraw.Draw(im)
    for l in lines:
        kuronuri(draw, l.position)
    im.save(img_path_out)
    print("Save to:", img_path_out)
    print(time.time() - stime)


ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者:斎藤 康毅
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)

自治体職員のための情報公開事務ハンドブック

自治体職員のための情報公開事務ハンドブック

  • 作者:松村 享
  • 発売日: 2016/03/03
  • メディア: 単行本