限りなき知の探訪

45年間、『知の探訪』を続けてきた。いま座っている『人類四千年の特等席』からの見晴らしをつづる。

軟財就計:(第8回目)『私のソフトウェア道具箱(その 8)』

2022-04-24 20:24:35 | 日記
前回

前回紹介したオンラインOCRのサイト、onlineocr.net の変換は非常に精度が高い。ありがたいことに、このサイトは無料で使えるが、一日に変換できるページ数やドキュメント本数には制約がある。それで、分量が多い場合は、全部を変換するのにかなり日数がかかる。(もっとも、インターネットやコンピュータシステムのからくりが分かっている人なら、「一日に」という文句が何を意味しているのか、簡単に推測がつくはずだし、同時に、この制約を回避する方法も分かるはずだ。同社の営業妨害になるので、これ以上の説明は省略する。)

さて、サイトを使って、Britannica 9th の index 部分を全て OCRでテキスト化した。例えば、 Plato(プラトン)の部分のページ(画像データ)は次のようにテキスト化できる。


#348-32770: 
PLATO : , Greek philosopher, xix. 194;
 his method of analysis, I. 793; in 
relation to Aristotle, II. 510; on astro-
nomy, II. 747; on the beautiful, I. 
215 ; on communism, vi. 212; econo-
mic ideas of, xix. 349; his ethics, 
VIII. 579; on evolution, VIII. 756; on 
the fine arts, IX. 199; his logic, xiv. 
785; his metaphysics, xvi. 90; on the 
Mysteries, xvii. 125; on Socrates, XXII. 
232; in relation to Socrates's teaching, 
xxii. 237; on sophistry, XXII. 266; 
on transmigration of the soul, xvi. 
106; his place in Greek literature, XI. 
142; Ast's translations and comment-
aries on, II. 735; Trendelenburg on, 
XXIII. 542.


テキストデータを見ると、いくつかの個所で、大文字、小文字の誤変換はあるものの、内容的にはほぼ完璧だといえる高い精度の変換がなされていることが分かる。

このOCRデータをもとにして、インデックスページ数と、変換データの行数、の2つの情報を追加したインデックスファイルを作った。ここまでくれば、以前紹介した xge でインデックスファイル検索すれば、検索項目が掲載されている該当ページが分かる。例えば、Plato を検索すれば、上で示したような結果が得られる。該当ページは 19巻の194ページ(xix. 194)であることが瞬時に分かる。この情報を元にして、ダウンロードした19巻のPDFファイルの 194ページにアクセスすればよいのだが、ここでもちょっとしたプログラムが組めるか組めないかで、効率が大幅に異なる。

プログラムが組めない場合、たいていの人は、 Explorerで該当フォルダーのPDFファイルをクリックして、ファイルが開き、該当のページ数を打ち込むだろう。これだけでも大層だが、それにも増して手間のかかることがある。それは、PDF内のページ数と、PDFファイルのページ数が一致しないことだ。例えば、Platoの場合、PDF内のページ数は194ページであるが、 PDFファイルではそれに差分の10ページを足した、204ページとなる。厄介なことに、この差分のページ数は、巻数ごとに異なる。いちいち計算するのは面倒だ!しかし、プログラムを組んでこの差分を自動的に計算して直ちに目的のページに飛んでいくことはいともたやすい。さらに、PDF閲覧で厄介なのはページ数の問題だけではない。自分にとって、見やすいフォントサイズや画面サイズにいちいちセットするのは面倒だ。結局これらすべてを以下に示すように、バッチファイル(pg.bat)でやらせることで Britannica 9thのデータを直ぐ閲覧することを可能にした。

===============================================

@echo off
REM Britannica 9th --  指定された巻とページ数を開く

if '%1' == ''  goto MSG

set /A baseoffset=10
set /A entvol=%1

set /A entpg=%2
echo  pg [vol %entvol% ] [page %entpg%] -- Britannica 9th version

REM 以下の offset の値、差が 12 であれば、2 をセットする

if %entvol% GTR 24 goto ERR_GTR

if %entvol% EQU  1 set offset=4 & goto DO_CONT1
if %entvol% EQU  2 set offset=2 & goto DO_CONT1
if %entvol% EQU  3 set offset=2 & goto DO_CONT1
if %entvol% EQU  4 set offset=6 & goto DO_CONT1
if %entvol% EQU  5 set offset=0 & goto DO_CONT1
if %entvol% EQU  6 set offset=0 & goto DO_CONT1
if %entvol% EQU  7 set offset=0 & goto DO_CONT1
if %entvol% EQU  8 set offset=0 & goto DO_CONT1
if %entvol% EQU  9 set offset=2 & goto DO_CONT1
if %entvol% EQU 10 set offset=0 & goto DO_CONT2
if %entvol% EQU 11 set offset=2 & goto DO_CONT2
if %entvol% EQU 12 set offset=0 & goto DO_CONT2
if %entvol% EQU 13 set offset=0 & goto DO_CONT2
if %entvol% EQU 14 set offset=0 & goto DO_CONT2
if %entvol% EQU 15 set offset=0 & goto DO_CONT2
if %entvol% EQU 16 set offset=0 & goto DO_CONT2
if %entvol% EQU 17 set offset=0 & goto DO_CONT2
if %entvol% EQU 18 set offset=0 & goto DO_CONT2
if %entvol% EQU 19 set offset=0 & goto DO_CONT2
if %entvol% EQU 20 set offset=4 & goto DO_CONT2
if %entvol% EQU 21 set offset=0 & goto DO_CONT2
if %entvol% EQU 22 set offset=2 & goto DO_CONT2
if %entvol% EQU 23 set offset=0 & goto DO_CONT2
if %entvol% EQU 24 set offset=2 & goto DO_CONT2

:DO_CONT1
set myfile0=eb0%entvol%.pdf & goto DO_CONT

:DO_CONT2
set myfile0=eb%entvol%.pdf & goto DO_CONT

:DO_CONT
set /A mypage=%baseoffset% + %entpg% + %offset%
REM echo  myfile [ %myfile% ] mypage[ %mypage% ] offset[ %offset% ]

set mycmd="X:Adobe\Reader 9.0\Reader\AcroRd32.exe"
set myfile=X:\xxx\brit09\%myfile0%

if exist %myfile% goto CONT
goto ERR

:CONT
start /B "" /max %mycmd% /A " page=%mypage%&zoom=200&pagemode=none&view=Fit"  %myfile%
goto END

:ERR_GTR 
echo ERROR Vol #[ %entvol% ] must be ( 1 -- 24 )
goto END

:MSG
echo Usage :  pg [vol #] [page #] -- Britannica 9th version
goto END

:END

===============================================


さて、今回は150年近く前の Britannica 9th の内容にアクセスする方法を紹介したが、ウェブ上にはこれ(Britannica)以外にもPDF形式でしか見ることのできない有用な情報がたくさん存在している。上で述べたように、PDF形式のファイルを閲覧する時にはいくつか厄介な操作が必要だが、プログラムが組めるとそれらの操作を自動化することができる。あるいは、そこまでいかなくとも操作を極めて簡略化することができるようになる。私の場合、Windows10環境での作業であるので、Dos Promptのバッチファイル、awk ファイル、それと自作あるいはネットからダウンロードした exe ファイルを組み合わせて処理している。商用のプログラムではないので、わざわざ無理して一気通貫な処理をする必要はない。幾つもの小さなプログラムを重ね合わせることで、短時間でほぼほぼ目的を達成するプログラムを組むことができる。

続く。。。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする