ラノベデータベースを作る 〜OCR〜その2

ラノベデータベースを作る 〜OCR〜のつづき。

今回は画像のバリエーションを増やしてみる。

 

最初のサンプルはこちら。

OCRサンプル2。test2.png

OCRサンプル2。test2.png

コレは縦書きだ。

 

OCRサンプル3。test3.png

OCRサンプル3。test3.png

これがサッと思いついたちょっと難しそうな漢字。

 

$ tesseract test2.png result -l jpn+eng -psm 5
Tesseract Open Source OCR Engine v3.04.00 with Leptonica
$ cat result.txt
日本語
あいう
ABC

$ tesseract test3.png result -l jpn
Tesseract Open Source OCR Engine v3.04.00 with Leptonica
$ cat result.txt
壱 鬱

縦書きの場合は -psm 5をオプションに入れればいいし、ちょっと難しそうな漢字も難無く読み取れるようだ。

 

それではこれはどうか。長めの文章だ。

OCRサンプル4。長めの文章。

OCRサンプル4。長めの文章。

 

$ tesseract test4.png result -l jpn
Tesseract Open Source OCR Engine v3.04.00 with Leptonica
$ cat result.txt
手持ちのコ三ックスゃラノべのデ一タべ一スを作りたいと
思った時、 全部手作業で入カするにはだぃ,ぶ厳しい分冒が
ぁるので、 どうせなら` 背表紙が写るょぅに並べて撮影今
各本ごとの領域に切り分け今。cR今タィ トル/著者くらぃ
の情報を得て、 デ一タべ一スに放り込む、 みたいなシステ
ムを作りたぃと思ぅわけだ〟 その準備として、 まずは0cR
で文字が認識出来るかどうか、 取り敢ぇずで触ってみる〟

なんだか惜しいところが沢山ある。これを人間が読む分には別にこれでも良い気もするが、データベースに放り込む内容としてはかなり難がある。最悪、こうやって読み取ったデータを手作業でチェックしていってもいいけれど…

 

OCRサンプル5。サンプル4からの切り抜き。

OCRサンプル5。サンプル4からの切り抜き。

1行だけ切り抜いてみると、次の通り。

$ tesseract test5.png result -l jpn
Tesseract Open Source OCR Engine v3.04.00 with Leptonica
[tea@teaarch ocr_test]$ cat result.txt
ぁるので` どうせなら` 背表紙が写るょうに並べて撮影今

比較すると、こういう感じだ。

ぁるので、 どうせなら` 背表紙が写るょぅに並べて撮影今

ぁるので` どうせなら` 背表紙が写るょうに並べて撮影今

大差無いっていうか、むしろ悪化している(前後の行がなくなったので、上下の位置関係がわかりにくくなった?)。

次は回転させてみよう。

 

OCRサンプル6。回転させた。

OCRサンプル6。10度回転させた。

 

$ tesseract test6.png result -l jpn+eng
Tesseract Open Source OCR Engine v3.04.00 with Leptonica
Empty page!!
Empty page!!

ダメだ。-psmで少し条件を変えてみたけど、7,6,4の時は拾えたけど、あとはやっぱりダメ。文字が少なすぎるか、回転させすぎかな?

 

OCRサンプル7。回転量を減らした

OCRサンプル7。回転量を減らした

 

$ tesseract test7.png result -l jpn+eng -psm 1
Tesseract Open Source OCR Engine v3.04.00 with Leptonica
Too few characters. Skipping this page
OSD: Weak margin (0.00) for 10 blob text block, but using orientation anyway: 0
[tea@teaarch ocr_test]$ cat result.txt
ABC123 あいうえお!

殆ど回転してないようにも見えるけど、要はほんの少しの傾きならなんとかなるという事だ。ちなみに-psm 1入れなくても同じ結果になった。オプションよくわからん。

 

正確に(傾き無く)切り出せる事、読み取りミスをなんとか吸収出来る事、がラノベデータベースにおける必要条件だな。

俺々プールをさくっと構築するスクリプト

書いた。https://github.com/ottyajp/solo_mining_pool_script

 

前のmonacoinの俺々プールを作るを参考にNOMPを構築した。それの記録をもとにスクリプトにまとめたもの。全体的にめちゃくちゃてきとう。

まだこのスクリプトを使って構築した環境で掘り当てれてないから誰か試してくれてもいいのよ(まがお)

 

パスをちゃんと考えて書いていかないとイカんなぁとしみじみ思ったのだった。

 


 

12/7 17時頃追記

テスト環境を書いてなかったけど、14.04.3 LTS 64bitです。VirtualBoxの上にインストールしました。ネットワークアダプタはブリッジが良いかと

一応32bit OSなら32bit版のmonacoindを拾ってきてくれるようにはしているけど、ほかは知らないです。

ラノベデータベースを作る 〜OCR〜

手持ちのコミックスやラノベのデータベースを作りたいと思った時、全部手作業で入力するにはだいぶ厳しい分量があるので、どうせなら、背表紙が写るように並べて撮影→各本ごとの領域に切り分け→OCR→タイトル/著者くらいの情報を得て、データベースに放り込む、みたいなシステムを作りたいと思うわけだ。その準備として、まずはOCRで文字が認識出来るかどうか、取り敢えずで触ってみる。

今回触るのはtesseract。環境はantergos(ArchLinux)。

 

普通にリポジトリにあるみたいなので、素直にインストールする。

$ sudo pacma -S tesseract tesseract-data-eng tesseract-data-jpn

tesseract本体、English, Japaneseの言語データをインストールした。言語データが無いと、本体だけでは実行出来ない。

 

今回試しにOCRしてみる画像はこちら。

OCRサンプル。サクッと作った

OCRサンプル。サクッと作った

 

さて、実行してみる。tesseract input_file output_fileといった感じ。-lで使用する言語を指定できる。+で複数繋げば複数選択する事も可能。

$ tesseract test.png result.txt
$ cat result.txt
ABC123

$ tesseract test.png result.txt -l jpn
$ cat result.txt
ABCー z3
ぁいう
日本語

$ tesseract test.png result.txt -l eng
$ cat result.txt
ABC123

$ tesseract test.png result.txt -l eng+jpn
$ cat result.txt
ABC123

$ tesseract test.png result.txt -l jpn+eng
$ cat result.txt
ABC123
あいう
日本語

  • 言語を指定しないと英語が選択される
  • 日本語だけではアルファベットや数字を正しく認識できない
  • 言語複数指定の場合は指定する順序で結果が変わる
  • eng+jpnよりjpn+engの方が精度が良い?

といったところか。そう何度も試したわけではないので、それぞれの実行も1回だし実際どうなのかは不明。

 

Tesseract-OCRの学習あたりを参考にすればさらなる学習も出来そうだけど、だいぶ骨が折れそうだな。

 

サンプル画像を変形した場合にどうなるかはまた今度調べよう。

monacoinの俺々プールを作る

Monacoinをソロマイニングする

なーんて調子に乗ってソロマイニング~とか言ってたけど、Askmonaのトピック

プランA:Monacoin Wallet ⇒ getworkが廃止されたらしく、うまく掘れない。getworkを無効にするオプションがminerにあれば若しくは…
プランB:自分用のPoolを設置 ⇒ Scrypt時代のPoolの作り方はググれば出てくる。今は(Lyra2REv2では)どうなのだろう…
プランC:SGMinerやCCMinerを改造し、getworkを使わないようにする。 ⇒ 少なくとも私は技量不足で無理っぽい…
プランD:プールからブロック情報だけもらって、Minerに渡す、proxyみたいなものを作る。 ⇒ いや、それで出来るかは知らんけど…

そもそも、できないのかな…?ソロマイニング…

とある。Monacoin Walletでやるソロマイニングはダメらしい(笑)getworkってなんだよ(笑)わかんね

 

で、プランBをちょっとやってみようかな、といった話だ。

結論だけ言えば、成功して、掘り当てる事もできた。けれど、構築当時の様子をそのまま記録、というのをやりそこねてしまったので、記憶から書き出している。細かい所にミスがあるかもしれないけど、そのへんは悪しからず。

 

長くなるので続きから。 続きを読む

ASIC用電源のファンを交換した

ASIC用電源の異音がひどいので調べた

で、どうもファンがダメっぽいって結論づけたので、交換した。今回買ってきたのはこれ。

なんだか無闇矢鱈と静かっぽいけど(風量大丈夫か?)

ピンも2本のが欲しいのに3本しかないし(これはよくある事っぽいけど)

 

風量を比較してみるけど圧倒的に違うので、多少本体温度に気をつける必要があるな、と思いつつ、コネクタを強引にすげ替えて、今は稼働中。

 

暫くまた様子見ですね。

ASIC用電源の異音がひどいので調べた

scryptなASIC…と言ってもFuryの事なんだけど、Furyで使っていた電源からの異音が結構ひどかったので(ぶいーんからのギリギリギリみたいな感じ)、調べた。

 

使っている電源はこちら。

電源の外観

電源の外観

 

7月頭頃に注文してからずっと稼働していたので5ヶ月ちかく動いてくれていた事になる。あっさり壊れるかなって思いながら購入したので、その点ではよかった。(レビューには、届いたその日に振ると中からカランコロンと音が聞こえる、とか書いてあったのでビクビクしていた)

 

取り敢えず開封する。周囲のネジを外すだけだ。上の写真で左上に製造年月を示す黄色いシールがあるけど、封印シールみたいになっているのかとおもって緊張していた(もしかして剥がせないと分解できないかな?)けれど、そんな事はなく、ネジも何もそこにはなかった。一応破かないでそーっと作業している。

蓋を開けるとこんな感じ

蓋を開けるとこんな感じ

 

電源からこんな激しい異音なんてどうせファンでしょ、と当たりをつけていたけれど、実際にファンだった。

 

そもそも電源なんて基本的には整流、変圧くらいしかやってないだろうし、音がなるとしたらコイル鳴きくらい。一番の騒音源は冷却用のファンなのだ。

ひとまずファンを取り外して通電してみたけど、無音。という訳でファンが原因でしょう。(いちおう、回路の中のファン部分に負荷が無いって意味では状態が違うから、実際のところはなんとも言えないんだけどね)

 

これ、これ買えないかな

これ、これ買えないかな

 

じゃあファンをなんとかするかなっていう発想になるのは当然だけど、型番検索したら海外の通販サイトしか当たらない。こことかこことか。

メーカーがHUA XIAN DA ELECTRONICとかいう全然聞いたこと無いメーカーだししょうがないかなといった気持ち。

 

この辺のサイトから輸入するか、それとも、12Vで60mm角くらいの、同等性能を持っていると思しきケースファンをそこら辺で買ってくるか、だね。取り敢えずは同等性能を持っていると思しきケースファンを用意する方針でいく予定。

Qt Creatorの補完キーを変える

便利なのだ、補完。でも、デフォルトではCtrl+Spaceで発動するので、補完するつもりでCtrl+Spaceを押すと、fcitxのON/OFFが切り替わってしまう。

補完キーを押さなくても、場合によっては少し待つと勝手に発動したりするんだけど、その待ち時間が結構ストレスになる。

という訳で、補完キーの変更をしよう。fcitxの切り替えは変えたくないので(影響範囲が大きすぎる)、Qt Creator側の補完キーをいじる。

 

ツール(T)→オプション(O)→環境→キーボードを呼び出す。その後フィルタにcompleteと入力する。

フィルタにcompleteと入力する

フィルタにcompleteと入力する

 

するとこのようにTextEditorのCompleteThisが見える。きちんとラベルも「補完の開始」となっているし、ShortcutもCtrl+Spaceでまさしくこれっぽい。

あとはこれを下の入力枠で変更するだけだ。Recordボタンを押してから好きなキーを押すと勝手に入力される。今回はお隣さんのShiftと組み合わせてShift+Spaceにしてみた。

Shift+Spaceは、実は日本語入力中に半角スペースを入力したい時に便利に使っているのだけど、Qt Creatorの中で日本語を入力する機会というのが滅多にない事なので(コメントは頻繁に書かない方だし、日本語を表示したい部分は全部tr()して後からLinguistで日本語を設定する)さしたる問題ではないかなー、と。

 

これで暫く試してみよう。