教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。
その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。
今回のパートでは、本教材で開発するWEBアプリケーションの設計内容について解説します。
設計をする前に本講座で作成する画面を全て紹介します。
画面は全部で5画面あります。
トップページには、本教材で実装する各機能画面に遷移するダッシュボードが表示されます。
また、画面左側には各機能画面に遷移するツリーメニューも表示されます。
画面右上には、ログオンユーザ名の表示やログアウトボタン機能を実装します。
請求書のPDFデータをアップロードする画面を実装します。
アップロード完了後は、自動的にPDFを解析してテキストデータを抽出し、Excelデータ化する処理が実行されます。
一覧表示ページでは、PDFデータから生成した請求書のExcelデータが一覧表示されます。
この教材では、以下の仕様で実装してきます。
①ログオンしたユーザが作成した請求書Excelデータだけが一覧表示される(他のユーザのデータは表示されない)
②不要になったExcelデータを削除する機能を実装
⇒個別ファイル選択の他に、「すべての文書」を一括選択する機能をつけます。
削除処理完了ページでは、不要なExcelデータの削除処理結果が表示されます。
正常終了した場合は、削除したExcelデータのファイル名一覧が表示されます。
ログオンページでは、ユーザーがログオンできます。
本教材では、単純なログオン機能のみ実装します。
今回のコースで開発する主な機能は、以下の6つです。
Copied!- ログオン、ログアウト機能
- PDFアップロード機能
- PDFからテキスト情報を抽出しExcelデータ化する機能
- 一覧表示機能
- Excelデータの一覧表示画面機能およびファイルダウンロード機能
- 不要なExcelデータの削除機能
本教材で開発するWEBアプリケーションの全体構成の概要について解説します。
全体の処理フローは以下のようになります。
①まず最初にユーザAAAでログオンします。
②PDFアップロード画面では、1つ以上のPDFデータを一括でアップロードできます。
③pdfminer.sixというPythonのライブラリーを利用してアップロードされたPDFデータからテキストデータを抽出します。
④テキストデータから情報を抽出し、Excelファイルへ情報を埋め込みます。
⑤生成されたExcelファイルは生成したユーザ毎に別のフォルダ内に格納します。
⑥生成されたExcelファイルをWEB上に一覧表示します。(自分が生成したExcelデータのみ表示)
本教材で開発するWEBアプリケーションは、以下の仕様とします。
①アップロードするPDFはExcel等のOffice製品を使ってPDF変換して作成したPDFデータ(イメージ画像ではないPDFデータ)のみを対象とします。
※OCRデータ(イメージ画像データ)は対象外ですので注意してください。
Copied!pdfminer.sixではイメージ画像データからテキスト情報を抽出することができません。
OCRデータからテキストデータを抽出するためには、tesseractやディープラーニングといった技術を利用する必要がありますが、この教材では扱いません。
②アップロードするPDFデータは1ページの請求書データとします。
※複数ページには対応していません。
<請求書PDFデータのサンプル>
Djangoプロジェクトの全体構成は以下の通りです。
Copied!├─tutorial ※Djangoプロジェクト
│ ├─media ※メディアファイル
│ │ ├─pdf ※メディアファイル
│ │ └─excel
│ ├─pdfmr ※PDFの一次アップロード先ディレクトリ
│ │ ├─forms.py
│ │ ├─views.py
│ │ ├─urls.py
│ │ ├─utils.py ※PDF->Excel抽出関連の関数定義ファイル
│ │ ├─customize.py ※テキスト情報をExcelに反映する関数定義ファイル
│ │ └─static ※静的ファイル管理用
│ ├─accounts ※ユーザ認証用アプリケーション
│ │ ├─forms.py
│ │ ├─views.py
│ │ ├─urls.py
│ ├─templates ※テンプレートファイル管理用
│ ├─db.sqlite3 ※データベース(デフォルトのSqliteを利用)
│ ├─manage.py
プロジェクト名は「tutorial」とします。
また、作成するアプリケーションは以下の2つがあります。
Copied!①accounts・・・ユーザ認証用のアプリケーションです。
②pdfmr・・・PDFからExcelデータを抽出するためのアプリケーションです。
データベースは、DjangoデフォルトのSqliteDBを利用します。
今回開発するコードの完成版は下記のGithubからダウンロードできます。
https://github.com/sinjorjob/django_pdfminer.git
以上で本パートは終了です。
お疲れ様でした。