【悩み】
・FessでPNGなどの画像ファイルを全文検索できる?
・画像ファイルをOCR(文字認識)しPNGのメタデータに登録できる?
・膨大な画像ファイルから見たい画像ファイルをすぐに見つけ出したい。
こういった「悩み」に答えます。
【本記事の内容】
① Fessとは?:Javaベースの全文検索ソフトウェア
② PNGの画像ファイルをOCRしメタデータとして登録
➂ FessでPNG画像ファイルを全文検索する
本記事に掲載した手順を実践したことで、1時間以内で手元にあるPNG画像ファイルに対して全文検索できました(下の動画参照)。
記事の前半では「PythonとOCRを使ってPNGにメタデータを登録する方法」を解説します。
記事の後半では「FessでPNG画像ファイルを全文検索する手順」を紹介します。
この記事を読み終えることで、「手元にある膨大なPNG画像ファイルから今すぐ見たい画像にすぐアクセスできる」状態になります。
Fessとは?:Javaベースの全文検索ソフトウェア
Fessとは、Javeで開発された無料で使える全文検索ソフトウェアです。
さらに詳しく「特徴」「ダウンロードから全文検索までの使い方」「インストール方法」などを知りたい方には、以下の記事がオススメです。
>> 【入門編】Fessとは?全文検索システムを5分で作れるOSS!
PNGの画像ファイルをOCRしメタデータとして登録
「PNGの画像ファイルをOCRしメタデータとして登録」に関してご紹介します。
【ご紹介事項】
・手順1:PythonとOCRで画像ファイルを文字認識
・手順2:PythonのPillowライブラリをインストール
・手順3:PNGのメタデータに文字認識(OCR)したテキストを登録
以降で、上記の各手順に関して解説します。
PythonとOCRで画像ファイルを文字認識
PythonとOCRを使うことで、下の図のように画像ファイル内に記載された文字を抽出できます。
詳しい手順に関しては、以下の記事をご覧ください。Pythonのインストールから画像ファイルを文字認識するプログラム例までを解説しています。
>> 【最短5分】PythonとOCRでPDFや画像から文字認識をする方法
PythonのPillowライブラリをインストール
PythonでJPEGやPNGなどの画像ファイルを扱う1つの方法として、「Pillowライブラリ」の利用があります。
【Pillowライブラリとは】
Pillowライブラリを使うことで、Pythonで画像処理を実現できます。例えば、指定した画像をリサイズすることができます。
参照:Pillowの公式ドキュメント
Pillowライブラリをインストールするために、「端末」または「コマンドプロンプト」上で以下のコマンドを順番に実行してください。
pip install pillow
pip list
コマンド実行後、「pillow (バージョン)」が表示された場合、「正常にpillowライブラリをインストールできた」と判断できます。
PNGのメタデータに文字認識したテキストを登録
Fessは、PNGのメタデータ部分を全文検索の対象にできます(下図参照)。
そのため、PNGのメタデータ内にOCRで文字認識したテキストを設定することで、PNGを全文検索できます。
ちなみに、PNGのメタデータ(iTXtのkeyword)に記載できる最大文字数に関してですが、公式ドキュメントを確認したところ、特に記載はありませんでした。
PNGのフォーマットについて:公式ドキュメント
PNGに対してOCRを実施し、OCR結果をPNGのメタデータに設定するPythonプログラムは、以下となります。適宜変更と記載された箇所は、自分用に書き換えてください。
import os
import sys
import re
from PIL import Image
import pyocr
from PIL.PngImagePlugin import PngImageFile, PngInfo
# pyocrが利用するOCRエンジンをTesseractに設定
pyocr.tesseract.TESSERACT_CMD = r"C:\Program Files\Tesseract-OCR\tesseract.exe" # 適宜変更
tools = pyocr.get_available_tools()
tool = tools[0]
# OCR(文字認識)したい画像ファイルを読み込み
ocr_image_file_path = "./input/sample.png" # 適宜変更
img = Image.open(ocr_image_file_path)
# OCR(文字認識)の実施
builder = pyocr.builders.TextBuilder(tesseract_layout=6)
text = tool.image_to_string(img, lang="jpn", builder=builder)
# OCR結果を整えるために、改行をスペースに変換
shaped_text = text.replace("\n", ' ')
# 画像ファイル読み込み
targetImage = PngImageFile(ocr_image_file_path)
# PNG画像ファイルのメタデータにテキストデータを埋め込む
metadata = PngInfo()
metadata.add_itxt("ocr-data", shaped_text)
targetImage.save("./output/sample.png", pnginfo=metadata) # 適宜変更
上記のPythonプログラムを「ocr-png-metadata.py」というファイル名で保存しましょう。
保存したPythonプログラムを実行するために、「端末」または「コマンドプロンプト」上で以下のコマンドを実行してください。
python ocr-png-metadata.py
コマンド実行後、指定したフォルダ内にPNGが生成されていた場合、「正常にPNGのメタデータに文字認識したテキストを登録できた」と判断できます。
また、PNGにメタデータが設定されたかどうかは、テキストエディタからPNGを開くことで把握できます(下図の赤枠)。
Python、OCR、Pillowにより、PNGのメタデータに任意テキストを設定できます。
以降で、Fessを使ってPNG画像ファイルを全文検索してみます。
FessでPNG画像ファイルを全文検索する
「FessでPNG画像ファイルを全文検索する」に関してご紹介します。
【ご紹介事項】
・手順1:Fessのインストール
・手順2:FessでPNG画像ファイルを全文検索対象に設定
・手順3:FessでPNG画像ファイルを全文検索
以降で、上記の各手順に関して解説します。
Fessのインストール
お使いのパソコンまたはサーバー上にFessをインストールしましょう。詳細な手順に関しては、以下の記事「Fessのダウンロード(インストール)と文書の全文検索」箇所をご覧ください。
>> 【入門編】Fessとは?全文検索システムを5分で作れるOSS!
FessでPNG画像ファイルを全文検索対象に設定
Fessで、PNG画像ファイルを全文検索対象にしましょう。
具体的な手順に関しては、以下の記事「全文検索対象のフォルダを設定(クロール設定)」箇所をご覧ください。
>> 【Windows向け】Fessのインストール方法を要件から解説
FessでPNG画像ファイルを全文検索
それでは、FessでPNG画像ファイルを全文検索してみましょう。
Webブラウザで以下のURLにアクセスします。
>> Fessの全文検索トップ画面(http://localhost:8080/)
アクセス後、下の動画のようにPNG画像ファイルに対しても全文検索ができます。
PNGのメタデータ部分(iTXtのkeyword)にテキストを登録することで、Fessから全文検索できるようになります。
【まとめ】FessでPNG画像ファイルを全文検索する方法【OCR利用】
いかがでしたでしょうか?
「Python」「OCR」「Fess」を組み合わせることで、PNGの画像ファイルに対しても全文検索できます。
最後にもう一度内容を確認しましょう。
【おさらい】
・PythonとOCRを使うことで、画像ファイルから文字を抽出できる
・PNGファイルのメタデータに文字を設定できる
・メタデータに文字を設定したPNGに対してFessは全文検索できる
本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。
コメント