見出し画像

ChatGPTは実務で使えるか?(画像認識システム開発編)


はじめに

クライアントから新規で画像認識システム開発の依頼がありました。
今回、ChatGPTを実務でフル活用して、どれだけ作業が効率化するか(楽できるか)試してみます。
以下の記事は、船舶業界のクライアントの仮定で話を進めます。
実際のクライアントは別の業界です。

タスクを明確化(部品図面の中の文字を認識)し、まずはGPT先生に聞いてみる!

まずは、やりたいことをChatGPTにそのまま聞いてみます。

船舶資材の図と数値を記載した図面のPDFから文字を認識して、データベースに格納するシステムを作りたいです。何をどのように準備すれば良いでしょうか。

船舶資材の図と数値を記載した図面のPDFから文字を認識して、データベースに格納するシステムを作りたいです。何をどのように準備すれば良いでしょうか。


すると、上の画像のようにスラスラ出てきます。
以下に引用します。

船舶資材の図と数値を記載した図面のPDFから文字を認識し、データベースに格納するシステムを作成するには、以下の手順で準備してください。

必要な技術とツールを選択:
PDFファイルを処理するためのライブラリ (Pythonの場合、PyPDF2やpdfplumberがおすすめ)
Optical Character Recognition (OCR) エンジン(文字認識)(TesseractやOCRopusなど)
データベース管理システム(MySQL、PostgreSQL、SQLiteなど)

開発環境のセットアップ:
開発に使用するプログラミング言語の環境を整える(Python、Java、C#など)
必要なライブラリやツールをインストールする

システム構築:
PDFファイルを読み込む機能を作成
OCRエンジンを使って図面から文字を抽出する機能を作成
抽出された文字データを適切な形式に整形する機能を作成
データベースに接続し、整形されたデータを格納する機能を作成

テストとデバッグ:
システムが正しく機能するかを確認するために、様々な船舶資材の図面を含むPDFファイルでテストを行う
問題が発生した場合、デバッグを行いシステムを改善する

ドキュメント作成:
システムの使い方や機能、開発環境などについてまとめたドキュメントを作成する
これらの手順を経て、船舶資材の図と数値を記載した図面のPDFから文字を認識し、データベースに格納するシステムを構築できます。開発には時間と労力がかかりますが、慣れてくると効率よくシステムを作成することができるでしょう。

一般的な回答を得られたので、ここから案件特有の条件を加えていきます。

詳しくやりたいことを伝える!


わかりました。
今回読み取る元となるPDFについて以下のような指定条件があります。
これに沿って手順を教えてください。
[指定条件]
PDFは、船舶資材が部品番号、形状、材料、価格などが文字と図からなる表形式[単位セル]で構成
船舶資材の種類は多数あり、表の項目名、項目数や1つの資材あたりの単位セルの大きさはそれぞれ異なる
単位セルには縦書きの文字も含まれる
文字や数字を読み取る順序は、単位セル毎に異なる可能性がある
読み取った内容は、データベースの項目順に整理するのでリスト内の並べ替えが必要な場合が発生
単位セル内の図は読み取らなくて良いが、図に付随する寸法は読み取る
PDFの読み取り方は、船舶資材毎に単位セルを矩形(レクタングル)で区切り、スクリーンショット化した画像を読み取る方式とする
資材単位セルの切り取り方は、PDF毎に異なるが、自動で行いたい
その場合、必要があれば機械学習などでパターン化する
資材単位セル毎に読み取ったデータは、API経由でデータベースに格納する

ChatGPT先生の回答

指定条件を考慮して、以下の手順で進めていきます。

必要な技術とツールを選択:
PDF処理ライブラリ(PyPDF2やpdfplumber)
OCRエンジン(Tesseract)
画像処理ライブラリ(OpenCV、PIL)
機械学習ライブラリ(scikit-learn、tensorflow)
データベース管理システム(MySQL、PostgreSQL、SQLite)
API開発ライブラリ(Flask、Django)

開発環境のセットアップ:
プログラミング言語の環境を整える
必要なライブラリやツールをインストールする

システム構築:
PDFファイルを読み込む機能を作成
画像処理ライブラリを使って、単位セルを自動的に検出・切り取る機能を作成
機械学習を使って、単位セルのパターンを学習させる
切り取った単位セルの画像を、OCRエンジンで文字認識を行う機能を作成
縦書きの文字も対応できるようにOCRエンジンを設定する
抽出された文字データを適切な形式に整形・並べ替える機能を作成
API経由でデータベースに接続し、整形されたデータを格納する機能を作成
API開発ライブラリを使ってAPIを実装する


テストとデバッグ:
様々な船舶資材の図面を含むPDFファイルでシステムが正しく機能するかテストを行う
問題が発生した場合、デバッグを行いシステムを改善する

ドキュメント作成:
システムの使い方や機能、開発環境などについてまとめたドキュメントを作成する
これらの手順に沿ってシステムを構築することで、指定条件に対応した船舶資材の図面のPDFから文字を認識し、データベースに格納するシステムが完成します。開発には時間と労力がかかりますが、適切な技術選択と計画によって効率的なシステム開発が可能になります。手順を進める中で、適宜技術や手法を見直して、システムの精度や効率を向上させることが重要です。

デプロイメント:
開発が完了したシステムを本番環境にデプロイする
必要に応じて、セキュリティ対策やモニタリング、バックアップなどを実施する

システムの保守とアップデート:
定期的にシステムの動作を確認し、問題が発生した場合は修正や改善を行う
新しい船舶資材や図面の形式が追加された場合、システムをアップデートして対応できるようにする
必要に応じて、機械学習モデルの再学習やチューニングを行い、認識精度を向上させる
これらの手順を経て、船舶資材の図面のPDFから文字を認識し、データベースに格納するシステムを継続的に運用・改善することができます。効率的なシステム開発には、適切な技術選択と計画が重要です。また、開発中に遭遇する問題に対処する能力も大切です。開発プロセスを進める中で、システムの精度や効率を向上させる取り組みを続けることで、より高品質なシステムが完成するでしょう。

だいぶん回答が具体的になってきました。
案件特有の条件を加えることで、上記太字のシステム構成の部分が具体的になりました。
実際にはさらに精度を上げていく必要がありますが、本記事ではここまでとします。
次にChatGPTに仕様書を作ってもらいます。

仕様書を作って!


以下に、上記手順をベースにした仕様書の概要を示します。詳細な仕様書を作成する場合、各機能や要件に関する技術的な詳細や実装方法を追加する必要があります。

船舶資材図面文字認識システム仕様書
1. 概要
船舶資材図面のPDFから単位セル内の文字データを抽出し、データベースに格納するシステムを構築します。

2. システム要件
船舶資材の図面を含むPDFファイルを読み込む
単位セルを自動的に検出・切り取る
OCRエンジンを使って単位セル内の文字データを抽出する
抽出された文字データを適切な形式に整形・並べ替える
API経由でデータベースに格納する

3. 技術スタック
プログラミング言語: Python
PDF処理ライブラリ: pdfplumber
OCRエンジン: Tesseract
画像処理ライブラリ: OpenCV, PIL
機械学習ライブラリ: scikit-learn, tensorflow
データベース管理システム: PostgreSQL
API開発ライブラリ: Flask

4. 機能一覧
4.1. PDFファイル読み込み機能
PDFファイルを開き、ページ毎に処理を行う
4.2. 単位セル検出・切り取り機能
画像処理ライブラリを使って単位セルを検出・切り取る
機械学習を用いて単位セルのパターンを学習させる
4.3. 文字認識機能
Tesseract OCRエンジンを使って単位セル内の文字データを抽出する
縦書きの文字にも対応できるよう設定する
4.4. 文字データ整形・並べ替え機能
抽出された文字データを適切な形式に整形する
必要に応じてデータを並べ替える
4.5. API経由でデータベース格納機能
Flaskを使ってAPIを実装し、データベースに接続する
整形されたデータをAPI経由でデータベースに格納する

5. 開発フロー
開発環境のセットアップ
各機能の実装
テストとデバッグ
ドキュメント作成
デプロイメント
システムの保守とアップデート

6. テスト計画
様々な船舶資材の図面を含むPDFファイルでシステムが正しく機能するかテストを行う
縦書き文字の認識精度を確認する
データベースへの格納が正常に行われるか確認する

7. 保守・アップデート計画
定期的にシステムの動作確認を行い、問題が発生した場合は修正や改善を実施する
新しい船舶資材や図面形式が追加された場合、システムをアップデートして対応できるようにする
機械学習モデルの再学習やチューニングを行い、認識精度を向上させる


この仕様書は、船舶資材図面文字認識システムの概要を示しています。詳細な実装や設計については、開発チームと協力して決定することが望ましいです。また、開発が進むにつれて仕様書を更新し、最新の情報が反映されるように管理することが重要です。

親切なことに、最後にコメントまでつけてくれてます。
クライアントに出す前にこの部分は削りましょうw

次に開発用の要件定義書を作ってもらいます。

要件定義書を作って!


以下に、船舶資材図面文字認識システムの要件定義書の概要を示します。要件定義書では、システムがどのような目的で、どのような機能を持つべきかを明確に定義します。詳細な要件定義書を作成する場合、各機能や要件に関する詳細を追加する必要があります。

船舶資材図面文字認識システム 要件定義書

1. はじめに
本要件定義書では、船舶資材図面のPDFから単位セル内の文字データを抽出し、データベースに格納するシステム(以下、システム)の要件を定義します。

2. 目的
システムの目的は、船舶資材図面のPDFから単位セル内の文字データを効率的に抽出し、データベースに格納することで、資材管理や在庫管理の効率化を図ることです。

3. 対象
本システムの対象は、船舶資材図面のPDFファイルです。図面は単位セルで構成され、部品番号、形状、材料、価格などの情報が含まれています。単位セル内には縦書きの文字も含まれることがあります。

4. 機能要件
システムは、以下の機能要件を満たす必要があります。

4.1. PDFファイル読み込み機能
システムは、船舶資材図面のPDFファイルを読み込むことができる。
4.2. 単位セル検出・切り取り機能
システムは、船舶資材図面の単位セルを自動的に検出し、切り取ることができる。
必要に応じて、機械学習を用いて単位セルのパターンを学習させることができる。
4.3. 文字認識機能
システムは、切り取った単位セル内の文字データを認識し、抽出することができる。
システムは、縦書きの文字に対応している。
4.4. 文字データ整形・並べ替え
システムは、抽出した文字データを適切な形式に整形し、データベースの項目順に並べ替えることができる。
必要に応じて、データの並べ替えを行うことができる。
4.5. API経由でデータベース格納機能
システムは、整形された文字データをAPI経由でデータベースに格納することができる。

5. 非機能要件
システムは、以下の非機能要件を満たす必要があります。

5.1. 性能
システムは、船舶資材図面のPDFファイルを効率的に処理することができる。
システムは、文字認識の精度が高いことが求められる。
5.2. 拡張性・保守性
システムは、新しい船舶資材や図面形式に対応できるように拡張性がある。
システムは、保守やアップデートが容易に行えるように設計されている。
5.3. 使いやすさ・ユーザビリティ
システムは、操作方法がわかりやすく、直感的に使用できるように設計されている。

6. 用語定義
単位セル:船舶資材図面において、部品番号、形状、材料、価格などの情報が記載された表形式のデータ単位。
この要件定義書は、船舶資材図面文字認識システムの機能要件と非機能要件を示しています。詳細な実装や設計については、開発チームと協力して決定することが望ましいです。また、開発が進むにつれて要件定義書を更新し、最新の情報が反映されるように管理することが重要です。

要件定義書は仕様書と比べるとボヤッとしてますね。
これは私が細かく指定しないことが原因ですので、この第一ドラフトをベースに盛り込みたい内容をChatGPTに伝えていく感じになるでしょう。
最後に、できてもいないシステムについてのユーザーマニュアルを作ってもらいます。
無茶振りですね。
人間に依頼したら、逃げ出すか、怒り出すレベルの依頼です。

ユーザーマニュアルを作って!

船舶資材図面文字認識システム ユーザーマニュアル

1. はじめに
このマニュアルでは、船舶資材図面文字認識システム(以下、システム)の使い方について説明します。システムは、船舶資材図面のPDFファイルから単位セル内の文字データを抽出し、データベースに格納することができます。

2. システム要件
システムを利用するためには、以下のシステム要件を満たす必要があります。

インターネット接続環境
Webブラウザ(Google Chrome, Mozilla Firefox, Safariなど)
3. システムへのアクセス方法
システムは、Webブラウザを通じてアクセスできます。以下のURLにアクセスしてください。
https://example.com/ship-material-recognition-system

4. 船舶資材図面のPDFファイルのアップロード
システムのトップページにアクセスし、ファイルを選択ボタンをクリックします。
ファイル選択ダイアログが表示されるので、船舶資材図面のPDFファイルを選択し、開くボタンをクリックします。
選択したPDFファイルがアップロードされ、システムが自動的に文字認識を開始します。

5. 文字データの抽出・データベースへの格納
システムが船舶資材図面の単位セル内の文字データを抽出し、整形します。
整形された文字データは、API経由でデータベースに自動的に格納されます。

6. 結果の確認
文字データの抽出とデータベースへの格納が完了すると、結果ページに自動的に遷移します。
結果ページでは、抽出された文字データがデータベースの項目順に並べられて表示されます。
必要に応じて、表示されたデータを編集したり、エクスポートしたりすることができます。

7. サポート・問い合わせ
システムの操作方法や不具合に関するお問い合わせは、以下の連絡先までお願いいたします。

Eメール:support@example.com
電話番号:+1-234-567-8910
サポートチーム営業時間:月 - 金(祝日を除く)9:00 - 18:00

8. よくある質問 (FAQ)
以下に、システムの使用に関するよくある質問とその回答を示します。

Q1: システムが正しく文字データを抽出できない場合はどうすればいいですか?
A1: 文字認識の精度は、PDFファイルの画質や単位セル内の文字配置によって変動します。画質が低い場合は、可能であれば高解像度のPDFファイルを用意し、再度アップロードしてください。それでも問題が解決しない場合は、サポートチームにお問い合わせください。

Q2: 複数のPDFファイルを一度に処理できますか?
A2: 現在のシステムは、一度に1つのPDFファイルを処理することができます。複数のPDFファイルを一度に処理したい場合は、それぞれのPDFファイルを個別にアップロードして処理を行ってください。

Q3: 対応しているデータベースの種類は何ですか?
A3: システムは、API経由でデータベースに格納するため、データベースの種類に関わらず対応が可能です。ただし、APIの設定やデータベースの接続情報が正しく設定されている必要があります。設定方法については、システム管理者にお問い合わせください。

Q4: システムをローカル環境で実行することは可能ですか?
A4: システムはWebアプリケーションとして設計されていますが、ローカル環境での実行も可能です。ローカル環境でのセットアップ方法については、システム管理者にお問い合わせください。


9. その他の注意事項
システムは、船舶資材図面のPDFファイル以外のファイルに対応していません。正しいファイル形式を使用してください。
システムの利用に関する著作権、商標権、知的財産権などの法的事項については、利用規約を参照してください。
このユーザーマニュアルは、船舶資材図面文字認識システムの基本的な使い方を説明しています。システムの使用にあたっては、このマニュアルに従って操作を行ってください。また、システムの更新に伴ってマニュアルも随時更新されることがありますので、最新の情報にアクセスするために定期的にマニュアルを確認してください。最後に、システムの開発者は、システムの利用に関する問題や不具合に対して責任を負いません。システムの利用に関するリスクは、ユーザーの責任において管理してください。

これには驚きました!
まさかまさかの頼んでもいないFAQ付き(太字部分)です。
GPT先生が前提を仮定して書いてくれたQAもあるので、もちろんそのままでは使えませんが、確実にたたき台にはなるというのは、ご理解いただけると思います。

さいごに(結論)


いかがでしたでしょうか?
今回は開発に入る前の企画レベルの業務にChatGPTを適用してみました。
私見としては、実務に落とせるという結論です。

このような書類作りにかける時間を圧倒的に減らし、その分アーキテクチャを決めるためのリサーチや思考に時間を充てることができ、結果的にクライアントに対しよりよい提案ができると考えます。

前回のブログでは、プログラミングの生産性を上げるテストをしてみましたが、今回は企画段階でのテストでした。

ChatGPTは、生活、趣味、教育、学習などの多方面において、ライフスタイルを変えるほどのインパクトを私たちに与えてくれました。

今後はユーザーみんなでビジネス面を深掘りしていく段階になりました。
これは、GPT3.5の時にはなかなか言えなかったことで、GPT4がリリースされてはじめて現実化し、言えるようになりました。

これからユーザーみんなでChatGPTをビジネスの分野でも使い倒して、日本の生産性を上げていきましょう!

【お知らせ】GPTsエージェントを試せます

マンガスタイルの画像生成GPTを5種類リリースしました。
こんな感じの画像を生成できるGPTエージェントです。
そのほか、水槽の魚を数えたり、店舗ファサードのスコアをつけたりするGPTエージェントもあります。
ChatGPT Plus以上のユーザーは、すぐにお試しいただけます(画像クリックで会社のWebサイトに)↓

この記事が気に入ったらサポートをしてみませんか?