[あなたのコードがどのように動作するのか、簡潔に説明してください。] [Write a brief explanation about how your code works here.]
任意の画像から日記[PDF]を自動生成する。
小学生の頃、長期休暇中に"絵日記"という宿題として出されることがあった。 絵日記をもし、"機械"が作成したらどうなるのか、私たちは大変興味を持った。 果たして、機械たちは私たちと同じような絵日記を作成できるのか! 私たちの世界を機械たちはどのように認識するのか! ぜひ、以下の実行コマンドを走らせてご覧ください!
When we were elementary school students, we were given a homework "a picture diary". We were very interested in what happens if "machines" creates "a picture diary". Can the machines create a picture diary similar to us! How do machines recognize our world? Please run command!
コマンドを実行すると、piclog.pdfが生成されます。
$ python3 index.py _IMAGE_URL_
$ ls
piclog.pdf
ローカル環境で動かす場合には次の手順が必要になります
$ pip install -r requests.txt
必要なAPIキーを入力 ローカル環境で作成する場合は、環境変数の設定または、.envファイルを作る必要があります。
export SUBSCRIPTION_KEY ='' # Azure Vision APIのKEY
export TEXT_SUGGEST_KEY ='' # A3RTのTest Suggest APIのKEY
export PROOFREADING_KEY ='' # A3RTのPROOFREADING APIのKEY
$ export -p | grep KEY
$ touch .env
SUBSCRIPTION_KEY='' # Azure Vision APIのKEY
TEXT_SUGGEST_KEY='' # A3RTのTest Suggest APIのKEY
PROOFREADING_KEY='' # A3RTのPROOFREADING APIのKEY
$ python -m unittest discover tests
$ coverage run -m unittest discover tests
画像から単語作成の流れ
source code : image_analizer.py
Azure Vision APIを用いて、CLIで指定した、URLの画像の単語群(英語)を検索する。
単語の翻訳
source code : translate.py
Glosbeの Translate API を用いて、 Azure Vision API で解析した英単語群を日本語単語に翻訳する。
作文を作成
source code : make_sentenceXX.py
mecabを使って品詞を判定し、文の中に同じ品詞のものがあれば置き換え、置き換えた続きを A3rt の Text Suggest API を用いて続きの文を作成する。
作文を添削
source code : make_sentenceXX.py
Text Suggest APIから返された文を Proofreading API を用いて、点数化し、 Text Suggest API で返された文の中で一番良いものを次の評価に利用する。
PDFを作成
source code : make_pdf.py
python3 の reportlab を用いて、PDF(日記)を自動生成させる。
利用技術 | その他 | |
---|---|---|
言語 | python | 3.6.1 |
利用API | A3RT Proofreading API | 文章添削 |
A3RT Text suggest API | 文章作成 | |
Azure Vision API | 画像から単語を作成 | |
Globe Translate API | 英語翻訳 | |
ライブラリ | requests | APIリクエスト |
mecab-python3 | 自然言語処理 | |
pillow | 画像処理 | |
reportlab | PDF作成 | |
coverage | coverage測定 | |
python-dotenv | 環境変数 |
Azure Vision API
A3RT のAPIの連携
自動的に作文
Test
並列処理
Python
from file_name import method_name
でfile_name、method_name ファイル名と関数名を同じにすることにより、可読性・保守性をあげた点。チームメンバーとの共有
Azure Vision API から、日本語の単語群を返すことができなかったため、少し不自然な日本語になった点。
CodeCheckを使うのが難しかった。
Glosbe Translate APIでうまく翻訳できない部分があった。
作文作成が難しかった。
Azure Vision API
クライアント側の指定した画像の解析が可能であること。
(※ 工夫 1. と同じ)
Globe Translate API
「Python 翻訳 API」と検索した際に使用しやすそうだったため使用した。
Azure Translate API を利用しようとしたが時間がなかったため断念した。