国立国会図書館のOCR Liteを使ってみる

2026/4/4 [15:49:43] (土) 天気

サンリオSF文庫が読める国立国会図書館のデジタルアーカイブ。

国立国会図書館のデジタルアーカイブの本をOCRして(?)テキストを引っ張り出す、というのが今回のエントリ。


先日書いたように、これは各ページを画像として保存したもの。WEBで読みやすいようにページが工夫されてるんだけど、やっぱり手元、ローカルで気軽に読みたい。老眼に優しく文字サイズも調整できるepub3電子書籍にしておきたい。

そのためには「画像で保存されている文章」をテキストにする必要がある。そしてなんと!国立国会図書館では画像で保存されている文章をOCRによってテキストにするツールを公開してくれている。


NDLOCR-Liteアプリケーションのリポジトリ

https://github.com/ndl-lab/ndlocr-lite

↑ こちらの

https://github.com/ndl-lab/ndlocr-lite/releases

「release」から、最新版のv1.1.3


「ndlocr_lite_v1.1.3_linux.tar.gz」

「Source code (zip) 」


をダウンロード。


まずは「ndlocr_lite_v1.1.3_linux.tar.gz」を適当なディレクトリに解凍。

「linux」というディレクトリに展開される。

linux
├── data
├── lib
├── ndlocr_lite_gui
├── python3.12
└── site-packages

この中の「ndlocr_lite_gui」という実行属性のついたファイルをコマンドラインで叩くと立ち上がる。

image

デジタルアーカイブの画像をスクリーンショットして溜め込んだディレクトリを指定してOCRを実行すると、アウトプット用に指定したディレクトリに「テキスト」「JSON」「XML」の3種類のファイルが保存される。


image

今回114枚の画像で、だいたい17分ぐらい。

PCはMac mini Mid 2011

OSはLinux Mint


・ルビや圏点は反映されてない(?)

・JSONやXMLにはレイアウト、位置情報が入ってるっぽい。

epub3の電子書籍にするので、テキストだけで問題はない。ルビや圏点がなくても、わたしは大丈夫。そのうちきっと解決してくれると思う他力本願寺。


これだけでテキスト化できて、操作画面を見ながらこまかい指示を必要ともしないんで、コマンドラインで実行できるようにした。


ただ、わたしはpythonについてまったく知らなくて、何かあったら困るので調べ物。


「Source code (zip) 」を適当なディレクトリで解凍する。

「ndlocr-lite-1.1.3」というディレクトリ以下に展開される

ndlocr-lite-1.1.3
├── LICENCE
├── LICENCE_DEPENDENCEIES
├── README.md
├── dummy.dat
├── ndlocr-lite-gui
├── pyproject.toml
├── requirements.txt
├── resource
├── src
└── train

展開されたディレクトリに移動して以下のインストールが必要。

ndlocr-lite-1.1.3$pip install -r requirements.txt


ということだけど、わけもわからずインストールして、現在の環境に変な影響が出たら困る。

pythonは仮想環境で利用する(?)こともできるとのことなので、仮想環境を使うために以下をインストール


ndlocr-lite-1.1.3$sudo apt install python3.12-venv

インストールが終わったら

ndlocr-lite-1.1.3$. .venc/bin/activate

と叩いて仮想環境に入る

→コマンドプロンプトの左端に「(.venc)」と表示される。

(必要なものは「.venc」ディレクトリにインストールされるっぽい)

仮想環境に入ったことを確認して、上記の「pip」コマンドで必要なものを改めてインストール


「ndlocr-lite-1.1.3/src」ディレクトリに移動してndlocr-liteのpython3のコマンドを叩けばOK

  • --sourcedir
    スクリーンショット画像の入ったディレクトリ
  • --output
    テキストなどが出力されるディレクトリ

各ディレクトリはどこでも大丈夫。わたしは相対pathで指定した。

ndlocr-lite-1.1.3/src$ python3 ocr.py --sourcedir ../../image-out --output ../../_tmp

コマンドラインの方が気持ち早かった…かも。

指定したディレクトリにGUI版と同じものが出力されていた。


作業が終わったら仮想環境を抜ける。

ndlocr-lite-1.1.3$deactivate


テキストにさえなってれば電書化はそれほど難しくない、かな。

…冒頭一字下げや空行がなくなってるんで、そのあたりの判定をどうにかしないといけない。


とはいえ。

これで、絶版となって今は読めないサンリオSF文庫が読み放題だ!!

今回、真っ先にテキスト化したのは、ボブ・ショウの『去りにし日々、今ひとたびの幻』

https://dl.ndl.go.jp/pid/12632736

これが読みたかったんだよなあ。スローガラスというアイディアから広がるドラマがたまらない傑作。


ちなみに、この作業の中でページのスクリーンショットを撮るには。

個人向けデジタル化資料送信サービス

https://www.ndl.go.jp/use/digital_transmission_individuals

わたしは「本登録」済みなので

>「公開範囲」が「送信サービスで閲覧可能」「国立国会図書館内/図書館・個人送信限定」

の本は「印刷」できる=PDFファイルとしてダウンロードできる。

※一回100コマまで


PDFにすればあとはImageMagickの出番なんだけど、今日時点コマンドがよくわからないんで、手作業で1ページずつスクショしたというテイタラク。

これはまたそのうち、だなあ。


そういや。

「OCRする」って、「インターネットする」と似てるような…

OCRって「する」ものなんだろか。言葉を雑に扱ってる自覚はあります、すみません。



[04/05 08:30:27] 追記

印刷用PDFがでかすぎて、うちの貧弱な環境だとメモリが足りない。

GIMPはエクスポートをポチっとクリックしたら戻ってこない。

ImageMagickは

>convert-im6.q16: cache resources exhausted

で、終了する。


[04/05 16:47:09]追記その2

pdfseparate でPDFを1ページずつにバラして処理すれば、ImageMagickで期待どおりに画像に変換される。

convert
 -density 300
 -units PixelsPerInch
 -quality 90
 -profile JapanColor2011Coated.icc
 -colorspace cmyk
 -profile sRGB_v4_ICC_preference.icc
 -colorspace srgb
 -crop 8712x5990+759+527
 pdf/0001001.pdf
 image/001.png

> -density 300

コレは、いわゆる印刷レベルのクオリティ。さすがに時間がかかる。

(-quality 90 はjpeg画像用で、pngを生成するのに関係ないけど、ついでに入れてても害はなさそうなのでなんとなくそのまま)


あちらこちらで昔から言われているように。

lmageMagickは何でもできるんだけど、コマンドラインオプションが順番も含めてわけわかめ(死語)

[更新]2026-04-05 16:52:13

ポケモンGO:噂のミュウをゲット

2018/4/4 [17:20:58] (水) 天気
image

ポケモンGOの新機能、リサーチ(クエストといった方がわかりやすい)

博士から与えられるクエストをクリアすると幻のポケモン、ミュウをゲットできる。


てことで実装初日の3/31からやって、今日4/4クリアしてミュウをゲットした。


クエストの難易度の高いところ、ハマりポイントはネットで言われてるように

・メタモンを一匹捕獲

・ゴーストタイプを10匹捕獲

だろう。

これについてはラッキーなことに、ウチの近所のグラウンドが先週からカゲボウズ(ゴースト)の巣になっていたので、10匹捕獲はすぐだった。

メタモンも無職フリーターの強みを生かしてポッポコラッタホーホーオタチゴニョニョゴクリンを狙って1日のうちにゲットできた。


また

・レイドバトルを10回

というクエストがあって、えええっレイドパスに課金しろってことか、と思ったけど、これは、コイキングのレイドにハピナス棒立ち時間切れ、というちょっとインチキでクリア。


捕獲したミュウは捕獲時のcp1280

個体値はかなり残念で77.8%。下から数えた方が早い。

技1がどくづき、技2がくさむすび

元のゲームをやってないニワカなんでよくわかってなくて、どの技がいいんだか見当がつかない。

とりあえずこのままの技構成で使ってみるかなあ。

電子書籍周辺請負仕事

2013/4/4 [11:42:20] (木) 天気

電子書籍がどうやら本当に立ち上がりつつある。kindleやkoboといった電子書店や、個人出版などとはまた別のところ。


電子書籍が認知され出して「電子書籍というのにすればいいのか」「EPUBというのがあるのか」「うちも電子書籍にしておこう」という話。


例えば、今までアプリで出していたものを電子書籍化することになったとか、今までPDFで作ってた社内文書をEPUBの電子書籍にすることになったとか、そこに需要があるっぽい。過渡期限定。

(あまり具体的に言うとNDAもあるのでテキトーにぼかすけど)

先日打診があって、ちょっとその手の文書と画像をワンセットもらってEPUBにした。


やることは単純で。

・文書をXHTMLに流し込み所定のフォルダにおさめる。

・画像をXHTML文書のファイル名と関連づけてリネームして所定のフォルダにおさめる。

・opfファイルやナビゲーション文書を作る。

ざっくりスクリプトを書いて処理したら、epubcheckでエラーがだぁーっと流れて吃驚。


見てみると。元の文書データはプログラムで動的に出力したもののはずなのに意味不明のパターン外の記述が散見。これ、たぶんうまくいかない文書があったので、個別に手作業を入れたに違いない。スクリプトで一発というワケに行かず、一度スクリプトでコンバートしたものに対して、エラーを手がかりにやっぱり個別手作業、となった。予想外に手こずった。


文書の構造化なんて意識しない方が多いだろうし、今後この手の個別対応された文書が大量に出てきて、制作現場の悲鳴が聞こえるようだ。


以前に書いたように、クライアントはたぶん今までと同じ見た目を求めるはず。でもリフローの電子書籍では難しいところもある。


「これをそのまま電子書籍にするだけでいいんだよ」


というリクエストがキツイよなあ。



とはいえ、粛々と仕事はありがたくいただいて行きます。

[更新]2013-04-25 18:41:05

フィクションがいいんだ

2007/4/4 [21:55:43] (水) 天気

そういや四月一日で読書SNSは公開して丸一年、だった。

本を仲介・媒介にした本読み同士のSNSというコミュニティサイト(ふた昔以上も前の草の根BBS規模)のつもりなんだけど、アクセスログのリファラーを見ると「蔵書管理」なんて検索で飛んでくるのがちらほら。うううむ、これは想定外。

ていうか、蔵書管理なら、エクセルとかアクセスなんかを使ってローカルでやったほうが性能も機能もよっぽどまとも。どうしてわざわざweb上のサービスを使うのか不思議だ。市販パッケージと比べてなんのアドバンテージもないんけどなぁ。

うちのポンコツサーバーで意図してるのは、SNSということで、気楽に本の話をしませんか、ということ。だけど、公開し以上、どう使われようがユーザーの都合。いや、でもまじめに意外だった。


NARUTO、ムヒョロジに続いて、アイシールド21もブックオフで現状の全巻ゲット。いやもうこいつもたぎるたぎる。

ヤフオクで23冊まとめ買いした平井和正は拳を固めて慟哭。

拾い読み返してる「ジョナサンと宇宙クジラ」はほのぼの気恥ずかしく泣ける。

なんというか。やっぱりフィクション読まなきゃいかんですよ。


…って、なんでいきなり最高気温10度でみぞれ降ってんだ。体がついていかんだろ。

息が白いってどういうこっちゃ

2005/4/4 [21:35:47] (月) 天気

夕べから冷たい雨。朝になってもまだやまず、職安に向かう道は息が白いほど寒かった。いや、職安の求人状況も中年のおっさんにはずいぶん冷たいもので、今日も空振り。実用書などを出してるところの求人に応募しようと思ったんだけど、契約社員で一年間。契約更新の可能性あり、というもの。いちおう職安で紹介状を出してもらったが、まだそこまで踏み切れずやっぱ止め。

立川の日高屋で塩ラーメンを食って…うぐぐぐぐ、おかしい、こんなにまずかったっけか、というベチャついた麺にスープ。いかんなぁ。


しおしおと帰宅して、Librettoのfirewallをなんとか格好つけようとあれこれ検索して思考錯誤。なにを許可してなにを弾く、というルール設定だけのはずなんだけど、ハマった。

がっちり表からも見えなければ中からも出られない設定にはなるし、LAN内部はスルーで行ききできるんだけど、LAN内部のパソから表に出る設定が不明。そんなこんなですっかり日が暮れてしまった。出先から部屋のパソコンに、ということはIPアドレスも固定じゃないし考えてないので、 /etc/hosts.allow でLAN内部からしか受けつけないようして、inetd.conf でも telnet ftp 以外はコメントにしておいたのでとりあえずの付け焼刃にはなるかも。

飲みのお誘いをいただいた時点でまだハマりっきり。忙しいところせっかくなのだが、明日に延期してもらう。

その後、今度は、わたしのサイトでもうすっかり機能していない掲示板を外してしまおうとあれこれ。CGIとUOの方はまだ生きてるので、残すとして、雑談系のものはこっちの雑記のコメントCGIで足りるか、と思いつつも簡単なフォームメールCGIをでっちあげ。

迷惑メールにうんざりなんでメールアドレスを晒すのは嫌だし、ちょうどいいかと取得したホットメールは腐りきったことにIE系のレンダリングエンジンでないと見ることができない。唖然。

なので、CGIでFORMを使って自分宛てにメールするものを。あて先を自分固定にしたので、ひとさまに迷惑をかけることもないだろうし、ネットの名簿屋(ネットでもこういうのが商売になるんだねぇ)にメアドを収集されることもないだろうし、もっと早く気づけよ、おれ。


天気予報によると明日は半袖で十分らしい。気温の激しい上下は勘弁してほしいぞ。


サーバ/インフラエンジニア養成読本 仮想化活用編 [クラウドな現場で役立つ知恵と知識が満載!] (Software Design plus)

『サーバ/インフラエンジニア養成読本 仮想化活用編 [クラウドな現場で役立つ知恵と知識が満載!] (Software Design plus)』

SoftwareDesign編集部 編

[更新]2026-02-04 14:26:03

<<2026/04>>
   1234
567891011
12131415161718
19202122232425
2627282930

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub還暦生活
検索: