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 -> 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