カテゴリー
サインイン 新規登録

間違いや改善の指摘

内容の技術的な誤り・誤字脱字やミスのご報告・解説やトピックの追記/改善のご要望は教材をさらに良くしていく上でとても貴重なご意見になります。

少しでも気になった点があれば、ご遠慮なく投稿いただけると幸いです🙏

実際には誤りではなく勘違いであっても、ご報告いただけることで教材のブラッシュアップにつながります。

質問ポリシー①

教材受講者みなさんのスムーズな問題解決のために、心がけていただきたいことがあります。

教材の内容に関する質問を投稿しましょう

教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。

その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。

0-4

本教材の全体設計を考える

今回のパートでは、本教材で開発するWEBアプリケーションの設計内容について解説します。

全画面の洗い出し

設計をする前に本講座で作成する画面を全て紹介します。
画面は全部で5画面あります。

トップページ

トップページには、本教材で実装する各機能画面に遷移するダッシュボードが表示されます。
また、画面左側には各機能画面に遷移するツリーメニューも表示されます。
画面右上には、ログオンユーザ名の表示やログアウトボタン機能を実装します。

0_05

PDFアップロードページ

請求書のPDFデータをアップロードする画面を実装します。
アップロード完了後は、自動的にPDFを解析してテキストデータを抽出し、Excelデータ化する処理が実行されます。

0_06

一覧表示ページ

一覧表示ページでは、PDFデータから生成した請求書のExcelデータが一覧表示されます。
この教材では、以下の仕様で実装してきます。

①ログオンしたユーザが作成した請求書Excelデータだけが一覧表示される(他のユーザのデータは表示されない)
②不要になったExcelデータを削除する機能を実装

⇒個別ファイル選択の他に、「すべての文書」を一括選択する機能をつけます。

0_07

削除処理完了ページ

削除処理完了ページでは、不要なExcelデータの削除処理結果が表示されます。
正常終了した場合は、削除したExcelデータのファイル名一覧が表示されます。

0_08

ログオンページ

ログオンページでは、ユーザーがログオンできます。
本教材では、単純なログオン機能のみ実装します。

0_09

この教材で開発する機能

今回のコースで開発する主な機能は、以下の6つです。

Copied!
- ログオン、ログアウト機能 - PDFアップロード機能 - PDFからテキスト情報を抽出しExcelデータ化する機能 - 一覧表示機能 - Excelデータの一覧表示画面機能およびファイルダウンロード機能 - 不要なExcelデータの削除機能

本教材の全体構成と機能仕様について

本教材で開発するWEBアプリケーションの全体構成の概要について解説します。

0_10

全体の処理フローは以下のようになります。

①まず最初にユーザ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データのサンプル>

0_11

Djangoプロジェクトの全体構成

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

以上で本パートは終了です。

お疲れ様でした。

現在のパート (0)
全パート (17)
みんなで助け合おう!
現在のパートのディスカッション 全0件