Fessで「Tesseract OCR」を利用する

【連載】

簡単導入! OSS全文検索サーバFess入門

【第25回】Fessで「Tesseract OCR」を利用する

[2020/04/17 08:00]菅谷 信介 ブックマーク ブックマーク

今回は、FessでオープンソースのOCRエンジン「Tesseract OCR」を利用する方法を紹介します。OCR(Optional Character Recognition:光学文字認識)とは、手書きや印刷された文字が含まれる画像をコンピュータで処理可能な文字コードの列に変換する技術です。OCRでは、パターン認識の技術などを用いて画像から文字情報を認識しています。

Fessでは、画像ファイルのメタデータで検索できるのですが、OCRを利用することで画像内の文字列でも検索できるようになります。

今回はFess 13.6.3とtesseract 4.1.1を使用し、画像内の文字列を検索するまでの手順を説明していきます。

Tesseract OCRの準備

まず、Tesseract OCRをインストールします。利用OSがMacOSの場合は、以下のコマンドを実行してください。

$ brew install tesseract
$ brew install tesseract-lang

その他のOSに関しては、Apache Tikaのサイトを参照してください。

PDFでOCRを適用する設定

PDFに対してもOCRを適用するためには、Fessの設定ファイルを更新する必要があります(画像だけを検索対象にするのであれば、この設定は不要です)。

設定ファイル「extractor.xml」をこちらのリンクから取得して、「app/WEB-INF/classes/crawler」に配置してください。

次に、配置したextractor.xmlを編集し、 以下の箇所をコメントアウトします。

<!--
        <postConstruct name="addExtractor">
                <arg>[
                        "application/pdf"
                        ]</arg>
                <arg>pdfExtractor</arg>
        </postConstruct>
-->

続いて、同じディレクトリ内にある「rule.xml」の以下の行もコメントアウトします。同じ内容の行が2カ所あるので、どちらもコメントアウトしてください。

<!--
        + "|application/pdf"
 -->

Tesseract OCR用設定ファイルの準備

Tesseract OCR用の設定ファイルを作成して、Fessのインストールディレクトリ内に配置します。

「TesseractOCRConfig.properties」を以下の内容で作成します。

#tesseractPath=
language=eng+jpn
pageSegMode=1
extractAcroFormContent=true
useNonSequentialParser=false
extractAnnotationText=true
sortByPosition=false
extractUniqueInlineImagesOnly=true
enableAutospace=true
maxFileSizeToOcr=2147483647
minFileSizeToOcr=0
timeout=30
suppressDuplicateOverlappingText=false
outputType=txt
preserveInterwordSpacing=false
enableImageProcessing=1
ImageMagickPath=/usr/local/bin
density=300
depth=4
colorspace=rgb
filter=triangle
resize=200

PDFにもOCRを適用するためには以下のように「PDFParser.properties」も作成します。

enableAutoSpace true
extractAnnotationText true
sortByPosition false
suppressDuplicateOverlappingText false
extractAcroFormContent true
extractBookmarksText true
extractInlineImages false
extractUniqueInlineImagesOnly true
checkExtractAccessPermission false
allowExtractionForAccessibility true
ifXFAExtractOnlyXFA false
catchIntermediateIOExceptions true
ocrStrategy ocr_and_text_extraction
ocrDPI 300
ocrImageFormatName png
ocrImageType gray
ocrImageScale 2.0
maxMainMemoryBytes 524288000
setKCMS false

「app/WEB-INF/classes/tika.xml」では、以下の行をコメントアウトしておきます。

<!--
      <parser-exclude class="org.apache.tika.parser.ocr.TesseractOCRParser"/>
-->

クローラの設定/実行

クロール設定を作成します。今回は/ocrディレクトリ以下を対象に検索するものとします。

Fessの管理画面を開き、「クローラー」>「ファイルシステム」>「新規作成」をクリックします。

「名前」には任意の設定名を、「パス」には「file:/ocr 」を設定します。「設定パラメータ」には先ほど作成したTesseractOCRConfig.propertiesとPDFParser.properties のパスを指定してください。今回は、以下のような設定となりました。

config.tika.tesseract.config=/Users/codelibs/fess-13.6.0/TesseractOCRConfig.properties
config.tika.pdf.config=/Users/codelibs/fess-13.6.0/PDFParser.properties

クロール設定登録後、「システム」>「スケジューラ」>「Default Crawler」で「今すぐ開始」をクリックします。

クロールが完了したら、Fessの検索画面を表示して検索フォームから画像に含まれる単語で検索してみてください。画像内の文字列が検索できることを確認できるはずです。

検索画面

* * *

今回は、FessでOCRを利用する方法を紹介しました。画像に含まれる文字列の検索もTesseract OCRを用いると簡単に実現できます。実用に足るかどうかはOCRの精度にも依存しますが、Tesseract OCRであればチューニングなども可能なので、画像内の文字列検索にぜひ利用してみてください。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】知りたい! カナコさん 皆で話そうAIのコト [8] お寺でAIは役に立ちますか? - 浄土宗善立寺 副住職 こうじりゅうじ氏(後編)

【連載】知りたい! カナコさん 皆で話そうAIのコト [8] お寺でAIは役に立ちますか? - 浄土宗善立寺 副住職 こうじりゅうじ氏(後編)

今回のゲストは、長野県塩尻市の浄土宗善立寺 副住職であり、寺院デジタル化エバンジェリストとして講演活動なども行うこうじりゅうじ氏。前編では、お寺業界の運営事情や、お寺がデジタル化することの意義などについて伺った。「お寺でAIは役に立つのか」について聞いた後半では、「むしろAIにこそ宗教が必要になるのでは」という見解が示されるなど、話題はAIが進化した未来の課…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
対話システムをつくろう! Python超入門
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
PowerShell Core入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る