読者です 読者をやめる 読者になる 読者になる

Ubuntuで日本語OCRに手を出してみた

こんばんは、knot-foundです。

学校では現在Rubyの授業があって課題が出ています。

その内容とはRubyを用いたCGIによるWebアプリを作ろうというものです。

 

で、この課題はグループ学習(Program Base Learning)で、三人一組で行い僕が実質コーダー兼リーダーになりそうです...(涙) ちゃんと仕事振らなきゃ

 

さて、そんなわけで課題が降ってきたわけですが僕たちは学校の食堂に張り出されてる献立を写真撮影し、写真をサーバーにアップロードした後にOCRを用いてデータ化したあとにWebページに整形して表示するというテーマにしました。ちなみにテーマはすぐ決まったわけですがこのテーマ実は僕がちょっと前から作りたいと思ってたシステムが元になってるのでぶっちゃけ需要が... まあ最悪僕が使えればそれでいいので(えっ

 

で、テーマからわかる通りこのシステムの肝は(なぜか)画像解析(OCR)となっております。そのため、OCRをプログラミングでどうやって実装しようか探してみたところ、次のようなものがヒットしました。

 

tesseract-3.02.02-win32-lib-include-dirs.zip - tesseract-ocr - VC++ libraries of Tesseract OCR 3.02.02 (32bit) - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google. - Google Project Hosting

 

Japanese character recognition

 

ちょっとリンクの貼り方になれてないので見にくいと思いますが勘弁を...

上がTesseractっていうOCRエンジンでHPが開発したものをGoolgeが公開しているものらしいです。

下がNHocrでこちらは東北大学の研究室が開発したもので日本製のエンジンです。日本製なだけあって英字の認識率はTesseractに劣るものの短文の日本語の認識率は高いです。

 

で、今回の僕の用途が献立という日本語が多くなりそうなものなのでNHocrを利用したいと思います。というわけで早速導入です。このサイトが綺麗にまとまっていたので参考にさせていただきました。本当はWindows上に直で導入しようと思ったんですが、僕のスキルが低いのとめんどくさそうだったのでUbuntu14.04上でやることにしました。


UbuntuでNHocrをビルド - simpgの日記

 

で、導入が終わって早速テストプログラムを走らせました。

結果なんですが縦書きはダメで横書きがわりといい感じになりました。

f:id:masakinishime:20150116001336p:plain

なんかユーザー名がアレですが気にしない。

 

東北の北がバラバラになって認識されてますね...

 

導入はいけたっぽいのでこれからどうやって精度あげたりすればいいのかやプログラムに組み込んでいくかを考えていきたいと思います。

 

それではこの辺で。

SSDのアライメントを調整しました

こんばんは。Knot_foundです。

だいぶ日が開いちゃいましたが書きます。

 

 前回、推奨機をSSDに換装した後OSやアプリの起動が速くなりそのついでにWEI(WindowsExperienceIndex:PCの性能を比較する上で一つの指標になる)を再評価して更新しました。が、一回目に評価するとHDD時代の5.9から変わりませんでした。

 バグかなと思って二回目やってみましたがやはり変わりませんでした。体感速度は確かに速くなってるからおかしいなと思ってるとふとアライメントのことを思い出しました。

 

NAND/AFTにおけるパーティションアラインメント問題のまとめ - Lansenの現実逃避日記 (id:Lansen) http://d.hatena.ne.jp/Lansen/20100724/1279973697

 

ここではかなり詳細に書いていらっしゃるので簡略すると

・XP以前のOSでSSDをフォーマットした場合や今回の僕のようにHDDからSSDにディスクイメージを普通に書き写しただけではオフセットと呼ばれるパーティション開始の論理セクタがずれてしまう。

・現在のHDDやSSDなどで採用されているアルゴリズムなどでオフセットがずれたままファイルの書き込みを行うと余分な書き込みが発生してしまう

・この余分な読み書きが全セクタにおいて起こるためせっかくのSSDの全力が発揮できない

ということになります。

 

このアライメントはWindowsVista以降のOSをSSDなどに新規でインストールする場合(メーカー製のPCも同様)などには自動的に調整されるため、特に調整が必要ないのですが今回のようにアライメント調整に対応していないバックアップソフトなどでHDDからSSDにイメージの書き込みを行うと速度低下が起こります。

 

よってアライメント調整に対応しているバックアップソフトでもう一度HDDの降るイメージを取り直しました。

EaseUs | EaseUS - 信頼性の高いバックアップソフトならEaseUs の「Todo Backup」 http://backup.easeus.jp/

http://www.vector.co.jp/soft/dl/winnt/util/se501336.html

「EaseUS Todo Backup Free 日本語版」 http://t.vector.jp/8v0

EaseUS Todo Backup - 窓の杜ライブラリ http://www.forest.impress.co.jp/library/software/easeustodobu/

 

やり方は次のリンクなんかを参考にしたらいいと思います。(決してスクショを撮ってくるのがめんどくさいとかそういうのではなく)

http://tvcap.fc2web.com/easeus-todo-backup/ver70/easeus-todo-backup70.html

 

それでクローンしなおしたあとのスコアがこちらになります。

 f:id:masakinishime:20141229004836p:plain

いやあもうHDDとは段違いですね。今までPCの起動に40秒ちょっとかかっていたのが30秒以内に確実に起動するようになりました。もちろん各種ソフトの立ち上がりも一瞬です。8000円もせずにこのスピードを手に入れられるようになり、耐振動性やバッテリー持続時間の向上など大きなメリットを受けることができるので皆さんも予算があれば試してみるといいと思います。(めんどくさいっていう人は素直にSSDの乗ったPC買った方が早いかも)

 

この件に関して何か質問があればこのブログのコメントなどでお気軽にどうぞ!

セキュリティミニキャンプに参加しました

こんばんは、knotfoundです。

また放置気味にしていたものぐさ太郎です。

 

書くネタなんかはいくつかあったんですけど自分に言い訳して書いていませんでした。。。

 

さてそんなことはさておき、今回は自分の中で大きいイベントがあったので書いておきます。

12/19~12/21に沖縄県でセキュリティ・ミニキャンプ in 沖縄 2014が開かれたんですが僕はこのキャンプの12/20~12/21にあった合宿講座のほうに参加させていただきました。

 

セキュリティ・ミニキャンプ in 沖縄 2014

 

で、ありのままをつらつら書くと文章がまとまりそうにないので少しに絞りますが

とにかく濃い!!深い!!難しい!!そして楽しい!!

この二言に尽きました。

 

どんなプログラムがあったとかは先ほどの公式ページに譲るとしてどのプログラムも非常に興味深い内容でした。その中でも特に面白いと思ったのは「攻撃検知ソフトの自作」でしたね。Linuxを触ったことは何度かあったんですけどもOSのカーネルまで触ったことが無かったので非常に楽しかったです。

 

また今回でさらに自分の実力のなさを実感できたのでCTFなどにぼちぼち手を出しつつネットワークの基本的な勉強もやり始めてゆくゆくは本キャンプへ参加しようと思いました。

 

とりあえず今回はここまでにします。近いうちに必ず下書きの記事などは投稿したいと思います。

推奨機をSSDにしました

こんにちはknot_foundです。

久しぶりにネタができたので更新します。

 

夏休みの最終日にAmazonで推奨機(Latitude e6220)用のSSDを注文しました。

SSDSanDisk製で128GBのものを選びました。余談ですが注文した際の価格が7500円ちょっとでした。高いイメージだったSSDも随分お手頃になりましたね…。

 

それで先週の木曜あたりに届いたのがこちらです。

f:id:masakinishime:20140925171959j:plain

で開封するとこう

f:id:masakinishime:20140925172411j:plain

マニュアルとSSD本体、そしてスペーサー(SSD本体が7mm厚なので9.5mm用のマシンに使うときにくっつけて隙間を埋めるやつ)ですね。

推奨機に別のディスクをあてがいたいって人は少し注意して欲しいのですがこのマシンのディスクを入れる場所は7mm厚で設計されてるのでそれに合うようなものを購入してください。じゃないとせっかく買ってきたのに使えないなんていう悲しいことになりかねません。

それでこのSSD、持ってみたらめちゃくちゃ軽くて最初はモックかと思いました!びっくりです。

f:id:masakinishime:20140925174016j:plain

そしたら早速ノートの裏蓋を開けて(ネジ一本回せばすぐ外せます)

f:id:masakinishime:20140925173232j:plain

HDDを取り外します。

f:id:masakinishime:20140925174154j:plain

もしかしたらお気づきの人もいるかもしれませんが僕のHDD、引っ張るためのタブが既にちぎれちゃってますorz ですので取る時はもう隙間の部分にマイナスドライバーを突っ込んで無理やりやったりしないとダメです。みなさんは丁寧に取って大事に扱ってください((

 

それでHDDからのカバーらしきものと接続端子についてるアダプタをSSDにそれぞれ取り付けます。

あとはHDDがはめてあった場所にSSDを入れPCの裏蓋をまた閉めて換装自体は終了です。

慣れたら5分もあれば余裕で終わるんじゃないでしょうか。

 

そして最後にあらかじめ取ってあったParagonのHDDのフルバックアップイメージを外付けHDDから書き戻せば完成…!

f:id:masakinishime:20140926220534j:plain

と一日で換装を終えるはずでした…が、実際には

・Paragonのリカバリーディスク(今回USBメモリから起動するタイプ)が推奨機との相性が悪く起動に失敗する

Windowsのイメージバックアップを使うもやはり失敗する

などで届いたその日にシステムを移行するのは無理でした…。

 

次の日にセンターに行って職員の方にダメ元でHDDのクローンができる機材を貸していただけないかとお願いしてみたところあっさり貸していただき(しかもその日ちょうどドライバーを忘れたためドライバーセットまで貸していただけました!)自己責任の下、クローン作業を敢行しました。が、再びの換装後、起動してみるも一瞬Windowsのブートアニメーションが表示された後BSoDが出て無限再起動に入ってしまいここでも失敗してしまいました。

 

何か策はないかと思いとりあえず先のParagonのリカバリーディスクを32bit版に書き換え他のマシンでブートすることに成功しました。これはいけるんじゃないかと試しにそのマシンのHDDをSSDに入れ替えリカバリー作業を行いました。(かなり時間がかかりました。2時間以上かな…)終わった後に恐る恐るノートに換装し直すと…

 

大 成 功 !!

もうめちゃくちゃ嬉しかったです。どれくらい嬉しかったのかはあえてカットしますが。

いろいろとやって気づいたところとかをまとめると

・電源入れてもなんの音もしない

・OSやアプリケーションの起動が速い

・発熱がHDDに比べて少ない

・ノートPCの重量が少し軽くなる

・バッテリー駆動時間が少し伸びる

こんな感じでいたれりつくせりですね。

 

で、今回密かに楽しみにしていたWindowsExperienceIndexのスコアを取ってみると…

なんと、5.9!!

換装前と変わらないじゃないですか…

 

体感上は確かに換装前より速くなってるのにどうしてだろうなあって思ってるとそういえばSSDのアライメントをうまく調整しないと本来のスピードが出ないなってことを思い出しました。

アライメント調整に関しては次の記事で書きます。

それでは。

LinuxMint使うときの初期設定とか

こんばんは。Knot_foundです。最初の投稿から230日以上過ぎてますが気にしません。

せっかくの夏休みだし今までも何とかしてまとめたいなって思ってたんで書いてみました。この3年間の試行錯誤とぐだぐだの積み重ねですがあしからず。

 

うちの学校の回線を使ってネットしたりするときは(多分他のところもそうだろうけど)Proxy通したりする必要があります。寮とかだとProxy設定するだけでいいんですが無線LANだと認証通したりするんでちょっとややこしいです。

ちょっと前のUbuntu12.04(12.10は未確認)に相当するバージョンまではすんなりいけたんですがその後の13.04からはなぜか同じようにやっても前のようにすんなり繋がらず騙し騙し使ってるって状況でした。ネットで探したり質問したりしましたが思うような回答が得られない日々が続きました。

 

ですが最近あるページに辿り着き(URLは失念)それを基に設定したらいけました。以下に続きます。

 

基本的にWindowsでやる場合と同じなのでセキュリティ方式とかは割愛します。自分のWindowsの設定でも見ながらやってください。

ここで重要なのは「CA certificate(CA証明書)」です。どうやら12.04以前まではこのCA証明書がなくても無視できる仕組みだったらしいですが13.04からは特定のセキュリティ方式だと証明書を指定しない場合うまく接続できないです。(間違ってたらすみません)なのでこのCA証明書を引っ張ってくる必要があります。

CA証明書をもらうには

https://<認証用のサーバ>/certsrv

とURLに指定してアクセスします。

あとは「CA証明書、〜〜〜のダウンロード」から辿っていきいずれかの形式を選択(どちらでもいいようです?)でダウンロードできます。

以下のサイトを参考にしました。

http://blogs.gine.jp/kusa/archives/2071

 

で、ここでダウンロードした証明書を先ほどの設定画面で選択し、設定を終えると無事無線LANに接続することができます。

 

次にProxyの設定方法なのですがブラウザなどのProxy設定やパッケージ管理に使用するapt-getのProxyを個別に設定する必要があります。

ブラウザのほうはOSの設定画面からです。

メニュー→設定→ネットワーク→ネットワークプロキシに進みます。

あとはWindowsに合わせます。

 

で、apt-getのProxy設定ですが僕の場合は/etc/apt/apt.confに記述する形で行います。

apt.conf(なければ作成)の中に

 Acquire::ftp::proxy "ftp://your.proxy.address:8080/";
 Acquire::http::proxy "http://your.proxy.address:8080/";
 Acquire::https::proxy "https://your.proxy.address:8080/";

を記述します。注意するのは編集にroot権限が要ることです。

 

基本的にネットワーク関連はこのくらいですかね。

 

あとは普段使ってるアプリとかを入れます。

 

Vimのインストール

$ sudo apt-get install vim

KeePass(パスワード管理ソフト)のインストール

$ sudo apt-get install keepass2

パーティション管理ソフトのインストール

$ sudo apt-get install gparted

至高のTwitterクライアントのインストール

$ sudo apt-get install mikutter

ほかにはOperaやTrueCrypt、Dropboxなどですね。

 

この辺は次のサイトを参考にしました。

http://pxpss.blogspot.jp/2012/04/ubuntu.html

文章が乱雑ですが備忘録を兼ねたものなので…

それではまた次回(いつになるんだろう)。

 

2014/10/23追記

日本版Remixを使用してインストールした場合、home以下が日本語名になりますがTerminalなどでディレクトリを指定する際などに面倒なので英語に変更します。

$ LANG=C xdg-user-dirs-gtk-update

 あとはgitのproxy

$ git config --global http.proxy <プロキシサーバのアドレス>:<プロキシサーバのポート番号>

はじめまして

はじめましてKnot_foundです。今日はてなブログなるものをはじめさせて頂きました。

ブログは久しぶりなのでよくわかりませんがよろしくおねがいします。