naota7118 / ocr_check_app

0 stars 0 forks source link

紙データの照合アプリ「OCR Check」

トップページ

アプリURL:https://ocrcheck.com/

本アプリは閲覧可能ですが、照合機能は使用不可とさせて頂いております。
理由としましては、本アプリは社内向けに作ったものであり、照合に使うデータの外部への公開をできるだけ控えたいためです。
ドラフト時にデモで照合処理を行っているところをお見せしながら説明させていただけますと幸いです。

概要

わたしは治験の検査員を行っています。 わたしの仕事 認知機能検査の採点および入力(手書き)を行う業務があります。

その業務において、紙データとエクセルデータの照合に時間がかかる問題を抱えていました。

そこで、OCR技術を活用して、照合作業を効率化するアプリ「OCR Check」を開発しました。

どんな課題を解決するのか?

現状で以下3つの課題があります。 現状どのような課題がある?

1ヶ月あたり190人、5ヶ月で合計およそ1,000人分のデータを2人体制でチェックしていました。

不一致の見落としがないように注意深く確認していましたが、それでもひと月200件のうち3〜4件ほど見落としがありました。

「どんなに注意してやっても、人力だと見落としが発生してしまう。自動化すれば見落としを防げるし、効率化できるのはないか?」 と考え、照合作業を自動化する方法を調べ始めました。

開発を始める前に行った事前ヒアリングや進捗レビューの内容は、こちらの記事で詳しく解説しています。

OCR Check事前ヒアリング・進捗レビュー・技術を選んだ理由

業務の流れ

業務の流れを順を追って説明します。 検査実施からエクセル入力までの流れ まず、被験者様と検査者によって検査が行われます。
検査が終わった時点では、得点は記入されていません。

いきなり検査用紙に得点を記入してしまうと、得点が間違っていた場合に何度も修正した跡が残ってしまうため、検査用紙を印刷します。
検査用紙のコピーと原本が採点チームに渡されます。

採点業務は、まず1人目が採点を行い、検査用紙のコピーに得点を記入します。
その後、2人目と3人目が採点を行います。
3人の得点が一致したらエクセル表に得点を入力します。

検査用紙の原本に得点を記入するまでの流れ その後、検査用紙コピーに記入された得点とエクセルに入力された得点が一致しているかを確認し、一致していたら原本に転記します。

なぜエクセルに入力して照合するのか? 「エクセルに入力して検査用紙コピーと照合する」手順を踏む理由は、原本の正確性を担保するためです。

現状どのように照合しているか 現状では、①検査用紙のコピーと②エクセルを印刷した紙を見比べて、一致しているか確認しています。
一致していなかったら間違っているほうの得点を修正します。

エクセル得点表を印刷した紙のサンプル このように、一致していたらマーカーやチェックを入れて照合の結果を残していました。

アプリを使うとどう変わるか?

OCR Checkで照合作業はどう変わる? OCR Checkを使うと、今まで2人合わせて1時間20分かかっていた作業が15分で完了します。

OCR Checkを使う3つのメリット 照合作業が効率化されるだけでなく、ヒューマンエラーの防止や検査員の業務パフォーマンス向上が期待できます。

説明動画

動画で実際にどのように照合処理が行われているか説明しています。
下の画像をクリックしていただくと、YouTube動画が再生されます。

※動画では検査データにモザイク処理がかかっており内容がわかりにくいですが、デモではサンプルデータを使ってモザイクなしでお見せします。

※2倍速での視聴をおすすめします。(音量が小さい場合は誠にお手数ですが大きくして頂けますと幸いです)

OCR Check動画サムネイル (1)

照合結果画面

修正すべき不一致の件数と修正箇所が一目でわかります。

スクリーンショット 2024-09-15 午後8 42 11

工夫したところ

工夫したところ1 検査用紙データから得点データを抽出するところで、抽出したい数値のみを抽出できず、何度もコードを書き直しました。

上記を実行するために、pメソッドで出力結果を確認しながらコードを修正していきました。

検査用紙から得点データを抽出する流れ Google Drive APIのOCR技術によって、PDFファイルの中のテキストデータのみがテキストファイルに出力されます。
その中から得点データのみ抽出し、被験者ごとの配列に格納して照合するメソッドに渡すようにしました。

工夫したところ2-1 ①検査用紙の得点と②エクセルの得点をそれぞれ被験者ごとの配列に格納して比較しようと考えました。

エクセルデータはRooライブラリを使って行ごとの配列に区切ることができましたが、検査用紙データは自分で設定する必要があったので、検査項目数で区切りました。

工夫したところ2-2 最終的に照合結果をどのように表示させるのがいいか悩みましたが、「被験者ごとに表形式で表示する」と決めたことで、[検査用紙データ, エクセルデータ, 照合結果]の形で出力することにしました。

使用した技術

インフラ構成図

ocrcheck_infra