2021年9月24日金曜日

【91】Archivmaticaで日本語のOCR認識(Tesseract利用)

今日は前回の続きのTesseractのテストです。
Archivemimaticaは、デフォルトでOCR認識用としてTesseractを使っています。基本は英語認識になっているので、日本語を認識できるようにしてみましょう!

Tesseractのファイルは、/usr/share/tesseract-ocr/ の下に実行ファイルがあります。まずは、そこをみてましょう。

学習した言語ファイルがあるところは、tessdataの中です。先週日本語版Tesseractを入れているので、下記には日本語認識に関わるファイルが存在している状態です。


各ファイルは以下のように関係しています。

jpn.traineddata:日本語
jpn_vert.traineddata:日本語(縦書き)
Japanese.traineddata:日本語
eng.traineddata:英語
osd.traineddata:文字の方向の判定

ここで日本語と英語のファイルをちょっといじってみます。Archivematicaでは英語だけを処理するように設定されているので、こっそりeng.traineddataの中身をjpn.traineddataにすり替えてテストしてみます。とりあえず、元のデータがなくなるとまずいので、eng.traineddata.originalにしておきます。


次に、eng.traineddataの中身をjpn.traineddataに入れ替えます。


このあと、Archivematicaに日本語文書のJPGファイルを入れてingestしてみます。
以下の画像をingestしました。
ingestしたJPGファイル

Transcriptionのマイクロサービスでは、Yesを選んでください。
結果は〜〜〜以下のように日本語を認識してくれました!

OCR認識で出力された結果

師匠ありがとうございます!これでTesseractの仕組みが少し理解できました!

今度は、ArchivematicaのPreservation planning からcommandを変更してみましょう。どちらかというとこちらが正式な方法です。先いじったファイルは元の状態に戻してから試してください。

Preservation planningでは、コマンドやルールの変更・追加ができます。マイクロサービスで行われる処理の中で正規化(Normalization)のようにルールが必要なタスクについては、行う処理内容をコマンドで書いて、実行する対象と結びつけます。これが、ルールというわけですね。

OCRの処理はTranscriptionのマイクロサービスで行われますので、TranscriptionのCommandを変更してみます。


以下が、Transcriptionのコマンドを変更する画面です。


上記のCommandの最後に -l jpn を追記しました。languageをjpnにしてくださいというコマンドです。試した結果……成功しました!(^^)/

では、次は縦書きも試してみます。
今度は以下のコマンドを最後に入れてみます。

-l jpn +Japanese_vert

これも成功しましたが、縦書きの認識率は少し低いです。でも7割程度は認識しているように見えます。

日本語関係の学習ファイルが2つあったので、以下でも試してみます。

-l Japanese +Japanese_vert

そうすると、以下のように結果が少し異なりました。


左:jpn  右:Japanese

Japanese.traineddataの場合は日本語と英語の学習用テキストを混在した状態で学習させた代物ということらしいです。また、出力結果に余計な空白が含まれる問題があるとのことです。(それで右のJapaneseで試した結果がああなったわけね…)

参考サイト

今日はここまでです!
今日は意外と順調に進みました。いつもこうだといいですね〜〜

================================
10月8日(金)19:00〜
やることは後日連絡です。ではまたね〜



2021年9月22日水曜日

【90】Tesseractの日本語版を使い、Archivematicaで日本語をOCRする。

ほとんどやる気のないHが担当で、更新が遅れに遅れました。すみません。

Archivematicaには、画像(JPGやTIFFファイル)のOCR機能があります。オープンソースのTesseract (テッセラクト)を使っています。

https://www.archivematica.org/en/docs/archivematica-1.13/user-manual/ingest/ingest/#transcribe-contents

Tesseractのウィキペディア、https://ja.wikipedia.org/wiki/Tesseract_(ソフトウェア)

こちらhttps://www.kkaneko.jp/tools/ubuntu/tesseract.htmlを参照し、日本語読み取り可能なものを入れます。

$ sudo apt -y update

$ sudo apt -y install tesseract-ocr tesseract-ocr-jpn tesseract-ocr-jpn-vert libtesseract-dev libleptonica-dev tesseract-ocr-script-jpan tesseract-ocr-script-jpan-vert  

vertは縦書き、scriptは手書きに対応しています。

使用できる言語の確認

$ tesseract --list-langs


コマンドの確認

$ tesseract --help


画像を使ってテスト。次のコマンドで実行。

$ tesseract <対象とする画像ファイル名> <出力ファイル名(.txtは自動付与される)> -l jpn

最後の-l jpnで日本語対応。つけないと英語の認識になります。

読み取れたかどうか確認します。

$ less ファイル名.txt 

印刷の字体は、結構読めました。一方で、手書きの文章は、あまり認識できませんでした。

続いて、-l jpnと-l Japaneseの違いを検証しました。Japaneseの方が認識している量が多いことが判明。

Archivematicaで実際にテストしました。Archivematicaのマニュアル該当箇所は次のページ。

https://www.archivematica.org/en/docs/archivematica-1.13/user-manual/administer/dashboard-admin/#processing-configuration

Micro-servicesを進めて作成されたAIPを確認。AIP内に、Objects>Metadata>OCRというディレクトリーあり。

確認すると英語しか認識していないことが判明。

Archivematicaのコマンド上の標準設定が英語になっていると推測。

設定ファイルを確認する。https://blog.machine-powers.net/2018/08/02/learning-tesseract-command-utility/ により、/usr/share/tesseract-ocrにあることをわかる。

見てもよくわからず。

TesseractのGUIツールであるgImageReaderで環境設定できないかを検討。https://websetnet.net/ja/use-gimagereader-to-extract-text-from-images-and-pdfs-on-linux/

$ sudo apt -y install gimagereader

日本語にはできませんでした。

わからなくなったので解散です。

後日談

師匠がArchivematicaでの日本語読み取りに成功。

Tesseractにデータが渡った時点でeng.traineddataを使って文字認識すると仮定。

元のeng.traineddataを名前の変更してjpn.traineddataにして文字認識させたら、英文も日本語も文字認識しました。

ちなみに、eng.traineddataとjpn.traineddataは

/usr/share/tesseract-ocr/4.00/tessdata/にあり。

最近の投稿

【108】Archives in the Digital Age: The use of AI and machine learning in the Swedish archival sectorを読む

 Gijs Aangenendt氏の修士論文、Archives in the Digital Age: The use of AI and machine learning in the Swedish archival sectorを半分読みました。 前半は、AIを扱ったアーカ...

人気の投稿