tag:crieit.net,2005:https://crieit.net/tags/OCR/feed 「OCR」の記事 - Crieit Crieitでタグ「OCR」に投稿された最近の記事 2022-02-03T16:48:31+09:00 https://crieit.net/tags/OCR/feed tag:crieit.net,2005:PublicArticle/17632 2021-09-04T10:18:02+09:00 2022-02-03T16:48:31+09:00 https://crieit.net/posts/Python-OCR PythonでOCRをやろうとしていきなり沼った話 <p>Jupyterlab上でPythonを使ってOCRをやろうとしたら沼った話.海外ニキのコメントを検索しながら目的達成.</p> <pre><code class="python"># ocr_card_filter.py import os from PIL import Image import pyocr import pyocr.builders # Installed TesseractのPATH pyocr.tesseract.TESSERACT_CMD = full path ~~~~ #省略 #OCR builder = pyocr.builders.TextBuilder() result = tool.image_to_string(img, lang="jpn", builder=builder) print(result) with open("ocr.txt",mode="w") as f: f.write(result) </code></pre> <p>Installed TesseractのPATHが分からず,沼った.</p> <pre><code>brew list tesseract </code></pre> <p>これでtesseractが格納されている場所を表示.Jupyter labで上のコードを実行するきは,<strong>必ずtesseractのfull pathを書く</strong>こと.でないと,tesseractが見つからないって怒られる.</p> <p>OCRの精度は,調べたところ,色を白黒にしたり,一部分だけ切り取ってやると精度が上がるらしい.</p> <p>個人的に便利な使い方は,大学院の授業のTAとして出席をカウントする時があったけど,zoomの参加者一覧をスクショして,OCRで出席者を文字起こししたこと.まあ,精度を上げる方法には機械学習とか色々あるらしい.それもいずれ勉強できたらなと思う.</p> 🚀🐶CZ投資ちゃんねる🐶🌕 tag:crieit.net,2005:PublicArticle/17031 2021-04-29T11:26:24+09:00 2021-04-29T11:26:24+09:00 https://crieit.net/posts/AI-608a195052936 画像認識AI モデル <p>AI OCRは以前から使われている技術ですが、近年、多くの会社が業務の省力化、高速化、生産性工場に貢献できる画像認識AI(人工知能)モデルを研究開発し、OCRなどの技術を活用ししていますが、OCRとは何でしょうか?<br /> 「働き方改革」や「ペーパーレス化」、「電子化」が求められる現在のところ、改めてOCRの技術や活用法について確認してみましょう。</p> <p><strong>OCRとは紙に書かれている文字を認識し、デジタル化する技術</strong><br /> OCRは、Optical Character Reader(またはRecognition)の略で、画像データのテキスト部分を認識し、文字データに変換する​<a target="_blank" rel="nofollow noopener" href="https://kaopiz.com/ja-news-ai-ocr-technology-introduction/"><strong>光学文字認識機能</strong></a>​のことを言います。具体的にいうと、紙文書をスキャナーで読み込み、書かれている文字を認識してデジタル化する技術です。<br /> 人間は、紙に書かれている文字を無意識に理解しますが、コンピューターは自動的に読み取ることができません。画像の中に何が映っているのか、コンピューターや機械などが認識する技術です。画像認識の技術は主に物体、顔、文字の認識ができます。文字認識が終わったら、ExcelやWord等で再利用できるように「元の文書と同じ形」での出力できるフォーマットに変換して出力することができます。<br /> OCRが以下のように文字認識をしています:<br /> 1.画像取り込み<br /> 2.レイアウト解<br /> 3.行の切り出し<br /> 4.文字の切り出し<br /> 5.文字認識<br /> 6.フォーマット出力</p> <p><strong>OCRの利用法の主流は文書の管理とデータ入力</strong><br /> OCRが実際にどんなことに使われているのか、いまひとつ分からないという方もいるかもしれません。ここでは、主な利用用途をご紹介します。</p> <p><strong>1. データ入力作業の手間を大幅に削減</strong><br /> 紙データの入力作業を人が手作業で行っている場合は、OCRの利用すれば、こういった細かい作業は時間がかかるだけでなく、長時間続けているとどうしても入力ミスのリスクが高くなるため、二重のチェックをしなくてはいけないこともあります。OCRであれば、スキャンをすると同時に書類形式で文書が保存できるので、データ入力の手間が半減されます。</p> <p><strong>2. 保存データの検索性の向上</strong><br /> OCRをかけておけば、テキストデータに変換されることで、キーワードによるデータの検索が可能になるため、書かれている内容のキーワードを検索すれば簡単に必要な書類を見つけたり、文章を引き出したりすることができます。また、OCRで画像データをテキスト化することで、文書ファイルのデータ容量を縮小することができるため、メモリー上の保管スペースを削減できるといったメリットもあります。</p> <p><strong>3. Word や Excel などの形式に変換することで、紙の書類修正を可能にする</strong><br /> OCR技術の活用法は、契約書などのビジネス文書を書類形式のデータにするというイメージがありますが、ただデータ化するだけではありません。WordやExcel、PowerPointなどのデータに変換できるので、書類の修正も手軽にできるようになります。</p> <p><strong>AIでさらに進化するOCR</strong></p> <ul> <li>業務効率や働き方改革のツールとして、再度注目されるようになった「OCR」。最近ではAI(人工知能)技術を取り入れた「​AI OCR​」も登場し、さらに進化を続けています。その名の通り、AIを搭載した「<a target="_blank" rel="nofollow noopener" href="https://kaopiz.com/ja-ai-image-recognition/"><strong>AI OCR</strong></a>」は、仮に最初の文字認識精度が低くても、利用するごとにAIが学習し、精度が上がっていくのが特徴です。さらにクラウドサービス化や業務システムとの連携など、「すぐに業務改革に使えるOCR」としても進化しています。</li> </ul> <p><strong>AI研究開発チャンスを広げます</strong><br /> AIはマーケティング、セキュリティ、旅行、健康など、多様多種なビジネスを再定義する可能性があります。大企業だけでなく、中小企業が参入するチャンスがまだ沢山あります。<br /> <strong>生産性を向上させます</strong><br /> 繰り返される作業の一部または全部を自動化することにより、作業時間を大幅に短縮します。精度をどんどん改善させることで、日常業務のヒューマンエラーを減少します。</p> hanhnh tag:crieit.net,2005:PublicArticle/16819 2021-04-05T20:50:12+09:00 2021-04-05T21:17:41+09:00 https://crieit.net/posts/Tesseract-Ubuntu-Docker TesseractをUbuntu(Docker)で試してみる <p>DockerでJupyterLab環境で構築し、その中でTesseractを使って画像から文字を抽出する。</p> <h1 id="DockerでJupyter Lab環境を構築"><a href="#Docker%E3%81%A7Jupyter+Lab%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89">DockerでJupyter Lab環境を構築</a></h1> <h2 id="Dockerfileを作る"><a href="#Dockerfile%E3%82%92%E4%BD%9C%E3%82%8B">Dockerfileを作る</a></h2> <p>任意のフォルダにDockerfileという名前のファイルを作成する。</p> <pre><code class="shell">$ mkdir ~/Desktop/docker_build $ cd Desktop/docker_build/ $ touch Dockerfile </code></pre> <p>Dockerfileの中身</p> <pre><code class="docker">FROM ubuntu:latest # update RUN apt-get -y update && apt-get install -y \ sudo \ wget \ vim #install anaconda3 WORKDIR /opt # download anaconda package and install anaconda # archive -&gt; https://repo.continuum.io/archive/ RUN wget https://repo.continuum.io/archive/Anaconda3-2019.10-Linux-x86_64.sh && \ sh /opt/Anaconda3-2019.10-Linux-x86_64.sh -b -p /opt/anaconda3 && \ rm -f Anaconda3-2019.10-Linux-x86_64.sh # set path ENV PATH /opt/anaconda3/bin:$PATH # update pip and conda RUN pip install --upgrade pip WORKDIR / RUN mkdir /work # execute jupyterlab as a default command CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--LabApp.token=''"] </code></pre> <h2 id="Dockerをビルド"><a href="#Docker%E3%82%92%E3%83%93%E3%83%AB%E3%83%89">Dockerをビルド</a></h2> <pre><code class="shell">$ docker build . Successfully built d723190a8650 </code></pre> <h2 id="Dockerを起動"><a href="#Docker%E3%82%92%E8%B5%B7%E5%8B%95">Dockerを起動</a></h2> <pre><code class="shell">$ docker run -p 8888:8888 -v ~/Desktop/ds_python:/work --name my-lab d723190a8650 </code></pre> <p>ブラウザからlocalhost:8888にアクセスしてJupyter Labに入る。</p> <h1 id="Docker上でTesseract"><a href="#Docker%E4%B8%8A%E3%81%A7Tesseract">Docker上でTesseract</a></h1> <h2 id="Tesseractインストール"><a href="#Tesseract%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">Tesseractインストール</a></h2> <h3 id="ターミナル起動"><a href="#%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E8%B5%B7%E5%8B%95">ターミナル起動</a></h3> <ul> <li>workディレクトリをクリック</li> <li>File -> New -> Terminal</li> </ul> <h2 id="本体インストール"><a href="#%E6%9C%AC%E4%BD%93%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">本体インストール</a></h2> <p>インストール途中で、ロケーションとタイムゾーンを聞かれるので、Asia、Tokyoを選択</p> <pre><code class="shell">$ sudo apt-get update $ sudo apt install tesseract-ocr $ sudo apt install libtesseract-dev </code></pre> <h2 id="バージョン確認"><a href="#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D">バージョン確認</a></h2> <pre><code class="shell">$ tesseract -v tesseract 4.1.0-rc1-184-g497d leptonica-1.75.3 libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.2) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0 Found AVX2 Found AVX Found SSE </code></pre> <h2 id="訓練済みモジュールインストール"><a href="#%E8%A8%93%E7%B7%B4%E6%B8%88%E3%81%BF%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">訓練済みモジュールインストール</a></h2> <pre><code class="shell">sudo apt install tesseract-ocr-jpn tesseract-ocr-jpn-vert sudo apt install tesseract-ocr-script-jpan tesseract-ocr-script-jpan-vert </code></pre> <p>モジュールがインストールされたか確認</p> <pre><code class="shell">$ tesseract --list-langs List of available languages (6): Japanese Japanese_vert eng jpn jpn_vert osd </code></pre> <h1 id="Tesseract実行"><a href="#Tesseract%E5%AE%9F%E8%A1%8C">Tesseract実行</a></h1> <p>第一引数は画像の名前、第二引数はOCRの結果を出力するファイル名。デフォルトで.txt拡張子が付く。</p> <pre><code class="shell">$ tesseract image.png ocr_out -l jpn </code></pre> <h1 id="PythonでTesseract実行"><a href="#Python%E3%81%A7Tesseract%E5%AE%9F%E8%A1%8C">PythonでTesseract実行</a></h1> <h2 id="pytesseractインストール"><a href="#pytesseract%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">pytesseractインストール</a></h2> <pre><code class="shell">pip install pytesseract </code></pre> <h2 id="pytesseract実行"><a href="#pytesseract%E5%AE%9F%E8%A1%8C">pytesseract実行</a></h2> <pre><code class="python">import Image import pytesseract FILE_NAME = './image.jpg' print(pytesseract.image_to_string(Image.open(FILE_NAME), lang=('jpn')) </code></pre> <h1 id="おまけ"><a href="#%E3%81%8A%E3%81%BE%E3%81%91">おまけ</a></h1> <h2 id="OpenCVでグレースケール変換"><a href="#OpenCV%E3%81%A7%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E5%A4%89%E6%8F%9B">OpenCVでグレースケール変換</a></h2> <h3 id="OpenCVインストール"><a href="#OpenCV%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">OpenCVインストール</a></h3> <pre><code class="shell">$ pip install opencv-python $ apt-get install -y libgl1-mesa-dev </code></pre> <h3 id="グレースケール変換"><a href="#%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E5%A4%89%E6%8F%9B">グレースケール変換</a></h3> <pre><code class="python">import cv2 im = cv2.imread('./image.jpeg') im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) cv2.imwrite('./image_gray.jpeg', im_gray) print(pytesseract.image_to_string(Image.open('./image_gray.jpeg'), lang='jpn')) </code></pre> skybee8