Tesseract(テッセラクト)は Apache ライセンスで配布されているフリーソフトで,OCRエンジン (libtesseract) とコマンドラインプログラム (tesseract) が含まれるパッケージです.画像に含まれる様々な言語の文字を認識することができます.
なお,このセクション(以降3ページ)は Windows の管理者権限のあるアカウントで作業ですることをおすすめします.一般ユーザでは権限の問題でインストール先や Path の設定箇所が異なり,うまく動作しない可能性もあります.
Tesseract User Manual によると,Windows 用の Tessract バイナリファイルは The Mannheim University Libraty (UB Mannheim) で配布されているもの利用すると良いようです.UB Mannheim の wiki ページ にある Tesseract installer for Windows の 64 bit 最新版をダウンロードして実行します.
内容を確認して「Next」をクリックします.
内容を確認して「I Agree」をクリックします.
「Install for anyone using this computer」を選びます.
日本語の認識が行えるように「Additional language data (download)」を展開して開きます.
その中にある「Japanese」にチェックを入れます.また縦書き日本語の認識が必要なると見込まれる場合は「Japanese (vertical)」にもチェックを入れると良いでしょう.
インストール先を確認します.このフォルダ名をコピーしておくと良いでしょう.後の PATH の設定で利用します.
スタートメニューの設定を行います.このサイトではスタートメニューを使う予定はないので「Do not create shortcuts」にチェックを入れても良いかもしれません.
インストール中です.
インストールが完了しました.
「Finish」を押して終了します.
Windows のコマンドプロンプトで入力したコマンドは Windows の PATH に含まれる場所から検索されて実行されます.いま Tesseract をインストールしましたが,まだ PATH の設定を終えていないので,コマンドプロンプトで tesseract を実行することができません.ここでは tesseract の実行ファイルが含まれるフォルダを Windows の PATH に登録します.
具体的には,Windows の「設定」アプリケーションにある「詳細情報」で,「システムの詳細設定」を開きます.さらに「環境変数」をクリックします.
「システム環境変数」の「Path」を選択して「編集」をクリックします.
ここで確認したインストール先を入力(コピー&ペースト)して追加します.
コマンドプロンプトを起動(既に起動していた場合は再起動)して,path
コマンドを入力します.結果の中に,tesseract の情報が含まれていれば OK です.
C:\Users\lecture>path ⏎ PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Microsoft VS Code\bin;C:\HashiCorp\Vagrant\bin;C:\Program Files\PuTTY\;C:\Program Files\Git\cmd;C:\Program Files\dotnet\;C:\Program Files\Tesseract-OCR\;C:\Users\lecture\AppData\Local\Microsoft\WindowsApps; C:\Users\lecture>
コマンドプロントを起動して画像内に含まれる文字を認識してみます.まず,利用可能な言語を確認します.英語 (eng),日本語 (jpn),縦書き日本語 (jpn_vert) などが利用可能です.
C:\Users\lecture>tesseract --list-langs ⏎
List of available languages in "C:\Program Files\Tesseract-OCR/tessdata/" (4):
eng
jpn
jpn_vert
osd
C:\Users\lecture>
次に,tesseract_data
フォルダにある en_1_img.png ファイルの文字を認識し,result_en.txt というファイルに出力します.ここで, -l eng
オプションは言語の指定です.この結果,正しく文字を認識していることがわかりました.なお,データは前のページを参考に準備してください.
C:\Users\lecture>cd Documents\python\pyocr ⏎ C:\Users\lecture\Documents\python\pyocr>tesseract tesseract_data\en_1_img.png result_en_1 -l eng ⏎ Estimating resolution as 318 C:\Users\lecture\Documents\python\pyocr>type result_en_1.txt ⏎ In this paper, we consider a nonparametric adaptive software rejuvenation schedule under a random censored data. For u failure time data and v random censored data, we formulate upper and lower bounds of the predictive system availability based on a nonparametric predictive inference (NPI). Then, we derive adaptive rejuvenation policies which maximizes the upper or lower bound. In simulation experiments, we show that estimates of the software rejuvenation schedule are updated by acquisition of new failure data, and converge to the theoretical optimal solution. C:\Users\lecture\Documents\python\pyocr>
言語の指定を変更すれば日本語でも認識できます.ただし,コマンドプロンプトの文字コードが異なるために文字化けしてしまいます.(出力されたファイルを Visual Studio Code や メモ帳などのテキストエディタで開くと正しく表示できるはずです.)
C:\Users\lecture\Documents\python\pyocr>tesseract tesseract_data\ja_1_img.png result_en_1 -l jpn ⏎ Estimating resolution as 452 C:\Users\lecture\Documents\python\pyocr>type result_ja_1.txt ⏎ 遐皮ゥカ閠・′閾ェ霄ォ縺ァ蜿朱寔縺励◆蟄ヲ陦楢ォ匁枚縺ョ譁・鍵 PDF 繝輔ぃ繧、繝ォ繧貞柑邇・噪縺ォ邂。逅・@, 遐皮ゥカ豢サ蜍輔↓譛・蜉ケ 豢サ逕ィ縺吶k縺薙→繧堤岼逧・→縺励※, 譁・鍵 PDF 繝・・繧ソ繝吶・繧ケ繧キ繧ケ繝・Β繧帝幕逋コ縺励◆. 蛻ゥ逕ィ閠・・ PDF 繝輔ぃ繧、繝ォ繧・Web 繝励Λ繧ヲ繧カ縺九i繧オ繝シ繝舌↓繧「繝・・繝ュ繝シ繝峨☆繧九%縺ィ縺ィ縺ァ, PDEF 繝輔ぃ繧、繝ォ繧剃ク蜈・噪 縺ォ邂。逅・〒縺阪k繧医≧縺ォ縺ェ繧九→縺ィ繧ゅ↓, 蜈ィ譁・、懃エ「. 繧ク繝」繝シ繝翫Ν讀懃エ「, 闡苓・、懃エ「. 繧ソ繧ー (繧ュ繝シ繝ッ繝シ 繝・ 讀懃エ「縺悟茜逕ィ縺ァ縺阪k繧医≧縺ォ縺ェ繧・ 縺セ縺・ 隲匁枚諠・ア縺ョ逋サ骭イ縺ェ縺ゥ縺ォ BIBTEX 諠・ア繧呈エサ逕ィ縺吶k 縺薙→繧よ悽繧キ繧ケ繝・Β縺ョ迚ケ蠕エ縺ョ縺イ縺ィ縺、縺ァ縺ゅk. 譛ャ隲匁枚縺ァ縺ッ譁・鍵 PDF 繝・・繧ソ繝吶・繧ケ繧キ繧ケ繝・Β縺ョ 隧ウ邏ー縺ォ縺、縺・※隴ー隲悶☆繧九→縺ィ繧ゅ↓, 諤ァ閭ス隧穂セ。螳滄ィ薙・邨先棡繧定・ッ溘☆繧・ C:\Users\lecture\Documents\python\pyocr>
コマンドプロンプトの文字コードは CP932 になっています.これを Unicode (UTF-8; 65001) に変更すると正しく表示できました.概ね正しく認識できていることがわかりました.
C:\Users\lecture\Documents\python\pyocr>chcp ⏎ 現在のコード ページ: 932 C:\Users\lecture\Documents\python\pyocr>chcp 65001 ⏎ Active code page: 65001 C:\Users\lecture\Documents\python\pyocr>type result_ja_1.txt ⏎ 研究者が自身で収集した学術論文の文献 PDF ファイルを効率的に管理し, 研究活動に有 効活用することを目的として, 文献 PDF データベースシステムを開発した. 利用者は PDF ファイルを Web プラウザからサーバにアップロードすることとで, PDEF ファイルを一元的 に管理できるようになるとともに, 全文検索. ジャーナル検索, 著者検索. タグ (キーワー ド) 検索が利用できるようにな��. また, 論文情報の登録などに BIBTEX 情報を活用する ことも本システムの特徴のひとつである. 本論文では文献 PDF データベースシステムの 詳細について議論するとともに, 性能評価実験の結果を考察する. C:\Users\lecture\Documents\python\pyocr>
ここでは Python の仮想環境を作成して画像内の文字認識を実行してみます.なお,仮想環境を構築せずに base 環境に直接 pyocr をインストールすることもできると思います.
まず,Anaconda Navigator を起動して,「Environments」のページにある「Create」をクリックします.
Name には任意の名前(ここでは「py39ocr」)を入力し,インストールしたい Python のバージョン(ここでは 3.9.12)を選びます.
しばらくすると py39ocr 仮想環境が構築されてリストの中に表示されます.
仮想環境の構築ができたら Anaconda Prompt を起動します.(1) Anaconda Prompt で仮想環境の一覧を確認し,(2) base 環境の設定とバージョンを確認,(3) py39ocr 仮想環境に入り,(4) py39ocr 仮想環境の設定とバージョンを確認します.
(base) C:\Users\lecture>conda env list ⏎ # conda environments: # base * C:\Users\lecture\anaconda3 py39ocr C:\Users\lecture\anaconda3\envs\py39ocr (base) C:\Users\lecture>where python ⏎ C:\Users\lecture\anaconda3\python.exe C:\Users\lecture\AppData\Local\Microsoft\WindowsApps\python.exe (base) C:\Users\lecture>python --version ⏎ Python 3.9.12 (base) C:\Users\lecture>conda activate py39ocr ⏎ (py39ocr) C:\Users\lecture>where python ⏎ C:\Users\lecture\anaconda3\envs\py39ocr\python.exe C:\Users\lecture\AppData\Local\Microsoft\WindowsApps\python.exe (py39ocr) C:\Users\lecture>python --version ⏎ Python 3.9.12 (py39ocr) C:\Users\lecture>
仮想環境 py39ocr にインストールされているパッケージを確認します.最低限のパッケージだけがインストールされています.
(py39ocr) C:\Users\lecture>pip list ⏎
Package Version
------------ ---------
certifi 2022.6.15
pip 22.1.2
setuptools 63.4.1
wheel 0.37.1
wincertstore 0.2
(py39ocr) C:\Users\lecture>
Python で OCR を利用するために pyocr
パッケージをインストールします.
(py39ocr) C:\Users\lecture>pip install pyocr ⏎ Collecting pyocr Downloading pyocr-0.8.3.tar.gz (67 kB) ---------------------------------------- 67.6/67.6 kB 3.8 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting Pillow Downloading Pillow-9.2.0-cp39-cp39-win_amd64.whl (3.3 MB) ---------------------------------------- 3.3/3.3 MB 7.8 MB/s eta 0:00:00 Building wheels for collected packages: pyocr Building wheel for pyocr (setup.py) ... done Created wheel for pyocr: filename=pyocr-0.8.3-py3-none-any.whl size=37160 sha256=24851fd2b2c5c0754297b567ffa6236939d98d42583b7d7f668297cf348d6262 Stored in directory: c:\users\lecture\appdata\local\pip\cache\wheels\fd\77\6a\e7f97be77dd46cc892e7b5fd9914f28a2b2fbf0bba86929607 Successfully built pyocr Installing collected packages: Pillow, pyocr Successfully installed Pillow-9.2.0 pyocr-0.8.3 (py39ocr) C:\Users\lecture>pip list ⏎ Package Version ------------ --------- certifi 2022.6.15 Pillow 9.2.0 pip 22.1.2 pyocr 0.8.3 setuptools 63.4.1 wheel 0.37.1 wincertstore 0.2 (py39ocr) C:\Users\lecture>
続いて pytesseract
パッケージをインストールします.
(py39ocr) C:\Users\lecture>pip install pytesseract ⏎ Collecting pytesseract Downloading pytesseract-0.3.10-py3-none-any.whl (14 kB) Collecting packaging>=21.3 Downloading packaging-21.3-py3-none-any.whl (40 kB) ---------------------------------------- 40.8/40.8 kB 2.0 MB/s eta 0:00:00 Requirement already satisfied: Pillow>=8.0.0 in c:\users\lecture\anaconda3\envs\py39ocr\lib\site-packages (from pytesseract) (9.2.0) Collecting pyparsing!=3.0.5,>=2.0.2 Downloading pyparsing-3.0.9-py3-none-any.whl (98 kB) ---------------------------------------- 98.3/98.3 kB 5.5 MB/s eta 0:00:00 Installing collected packages: pyparsing, packaging, pytesseract Successfully installed packaging-21.3 pyparsing-3.0.9 pytesseract-0.3.10 (py39ocr) C:\Users\lecture>pip list ⏎ Package Version ------------ --------- certifi 2022.6.15 packaging 21.3 Pillow 9.2.0 pip 22.1.2 pyocr 0.8.3 pyparsing 3.0.9 pytesseract 0.3.10 setuptools 63.4.1 wheel 0.37.1 wincertstore 0.2 (py39ocr) C:\Users\lecture>
さらに Juypter Notebook もインストールします.
(py39ocr) C:\Users\lecture>pip install jupyter ⏎
Python の仮想環境構築と必要なパッケージのインストールができれば,Jupyter Notebook を使って画像内の文字認識を行ってみます.まず,フォルダを移動して Jupyter Notebook を起動します.
(py39ocr) C:\Users\lecture>cd Documents\python\pyocr ⏎ (py39ocr) C:\Users\lecture\Documents\python\pyocr>jupyter notebook ⏎
まず,文字認識ができるように環境が構築されていることを確認します.実行結果としてモジュール名が出力されれば問題ありません.もしも []
とだけ出力された場合はいずれかの設定に問題があるはずです.
import pyocr
tools = pyocr.get_available_tools()
print(tools)
[<module 'pyocr.tesseract' from 'C:\\Users\\lecture\\anaconda3\\envs\\py39ocr\\lib\\site-packages\\pyocr\\tesseract.py'>]
次に,言語を英語に設定して tesseract_data
フォルダにある en_1_img.png
から文字を認識します.
import os
from PIL import Image
import pyocr
import pyocr.builders
file_path = os.path.sep.join(['tesseract_data', 'en_1_img.png'])
lang = 'eng'
tool = pyocr.get_available_tools()[0]
text = tool.image_to_string(
Image.open(file_path),
lang=lang,
builder=pyocr.builders.TextBuilder()
)
print('file_path:', file_path)
print('lang: ', lang)
print('----------')
print(text)
file_path: tesseract_data\en_1_img.png lang: eng ---------- In this paper, we consider a nonparametric adaptive software rejuvenation schedule under a random censored data. For u failure time data and v random censored data, we formulate upper and lower bounds of the predictive system availability based on a nonparametric predictive inference (NPI). Then, we derive adaptive rejuvenation policies which maximizes the upper or lower bound. In simulation experiments, we show that estimates of the software rejuvenation schedule are updated by acquisition of new failure data, and converge to the theoretical optimal solution.
日本語の場合でも言語設定を変更するだけで認識ができます.なお,「ブラウザ」を「プラウザ」,「PDF」を「PDEF」と認識したり,「,」を「.」と認識するなど,僅かな誤認識が含まれています.
import os
from PIL import Image
import pyocr
import pyocr.builders
file_path = os.path.sep.join(['tesseract_data', 'ja_1_img.png'])
lang = 'jpn'
tool = pyocr.get_available_tools()[0]
text = tool.image_to_string(
Image.open(file_path),
lang=lang,
builder=pyocr.builders.TextBuilder()
)
print('file_path:', file_path)
print('lang: ', lang)
print('----------')
print(text)
file_path: tesseract_data\ja_1_img.png lang: jpn ---------- 研究者が自身で収集した学術論文の文献 PDF ファイルを効率的に管理し, 研究活動に有 効活用することを目的として, 文献 PDF データベースシステムを開発した. 利用者は PDF ファイルを Web プラウザからサーバにアップロードすることとで, PDEF ファイルを一元的 に管理できるようになるとともに, 全文検索. ジャーナル検索, 著者検索. タグ (キーワー ド) 検索が利用できるようになる. また, 論文情報の登録などに BIBTEX 情報を活用する ことも本システムの特徴のひとつである. 本論文では文献 PDF データベースシステムの 詳細について議論するとともに, 性能評価実験の結果を考察する.