nhocrでOCR機能を実験する
覚書
オープンソースのOCRについてはtesseract-ocrまたはNHocrの2つが有名
その中でもGoogle検索から「認識率が高い」との記事がいくつかあったので試しにインストール
cd /usr/local/src/archive #依存しているO2をインストール wget http://www.imglab.org/p/O2/archives/O2-tools-2.00.tar.gz tar xvzf O2-tools-2.00.tar.gz -C ../source cd ../source/O2-tools-2.00 ./configure --prefix=/usr/local/ make install #nhocrインストール cd /usr/local/src/archive wget https://nhocr.googlecode.com/files/nhocr-0.21.tar.gz tar nhocr-0.21.tar.gz -C ../source cd ../source/nhocr-0.21 ./configure --prefix=/usr/local/ make && make install
これで環境構築は以上。
テストは以下のように実施
cd test ./run-test fs.pgm: ファイルシステム hello.pgm: ニんにちは、 tohoku3.pgm: # Character candidates table # produced by: NHocr - Japanese OCR v0.21 IMG 0 R 1 東 0 0 2.4283356e+00 R 2 束 0 0 2.5794504e+00 R 3 京 0 0 2.7960027e+00 R 4 恵 0 0 2.8455623e+00 R 5 車 0 0 2.8773998e+00 ~~~
上記のように表示が出ればOK
次回はHTMLキャンバスから描画した画像をUPして、それをOCR解析します。
明けましたのでWEBアプリ作成!
明けましておめでとうございますm( )m
年も明けたので記念とばりに、3つの簡易アプリを作成しました〜
http://develop.wcoki.net/top/lists ※サンプルアプリ
canvasやocrなど自分としては未開の領域挑戦しました。
また落ち着いたら、コード公開します。
今年も宜しくお願いしますm( )m
ubuntuにMySQL 5.6.15インストールしてみた
覚え書き
node.js+MySQLな環境を構築するため、ubuntu上にMySQL5.6をインストールした。
以下手順
手順
sudo apt-get install cmake wget cd /usr/local/src sudo mkdir source archive rpm #お好みの場所へソースをDL cd archive sudo wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz sudo tar xzf mysql-5.6.15.tar.gz -C ../source cd ../source/mysql-5.6.15/ #cmake option cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DENABLE_GCOV=1 \ -DWITH_DEBUG=0 \ -DENABLE_DEBUG_SYNC=0 sudo make -j3 sudo make install
MySQL設定
sudo groupadd mysql sudo useradd -g mysql mysql sudo chown mysql:mysql /usr/local/mysql cd /usr/local/mysql
初期化エラー
sudo cp -a support-files/my-default.cnf /etc/my.cnf sudo ./scripts/mysql_install_db --user=mysql \ --datadir=/usr/local/mysql/data [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). [ERROR] Can't read from messagefile '/usr/share/mysql/english/errmsg.sys'
http://bugs.mysql.com/bug.php?id=69677
※バグではないよ下記のように設定するんだよと情報が
MySQL再度設定
sudo ./scripts/mysql_install_db --defaults-file=/etc/my.cnf \ --user=mysql --datadir=/usr/local/mysql/data sudo cp -a support-files/mysql.server /etc/init.d/mysqld sudo service mysqld start * MySQL server PID file could not be found! Starting MySQL ....... * $ /usr/local/mysql/bin/mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.15-log Source distribution
クライアント側のjavascript動的読み込み
覚書
javascriptで動的に読み込むjsにrequire.jsを利用しているのですが、更にそのrequire.jsをネイティブなコードで読み込んだ際に出た問題点
コード
<script> (function() { var a = document.getElementsByTagName('script')[0]; var b = function (src, main) { var e = document.createElement('script'); e.src = src; e.setAttribute('data-main',main); a.parentNode.insertBefore(el, a); } b('/js/require.config.js'); b('/js/require.js', 'main'); })(); </script>
<head>内に期待していたrequire.jsのロードが出来たがF5連打すると、require.config.js/require.jsの読み込み順番が異なり
まれにエラーが起きてしまう。
※同期処理が出来ていないorz
対処方法
<script> (function() { var a = document.getElementsByTagName('script')[0]; var b = function (src, main) { var e = document.createElement('script'); e.src = src; e.setAttribute('data-main',main); a.parentNode.insertBefore(el, a); } b('/js/require.config.js'); setTimeout(function(){ b('/js/require.js', 'main'); },10); })(); </script>
厳密にはtimer処理つけてチェックしたほうがよさそう。。。
Moment
覚書
Node.js上にてTimezoneの形式を簡単に扱えるライブラリがないか探していたら
以下のMomentというすばらしいものが存在していた。
MongoDBに格納されている日付形式が、ISODateが標準となっていると思いますが、そのデータをTimezoneの変更や、日付の形式を簡単に変換できます。
インストールは以下の手順のみ
$ npm install moment moment-timezone
使用方法
var moment = require('moment'); var momentTz = require('moment-timezone'); var foo = moment("2013-12-18T06:01:58.860Z").tz("Asia/Tokyo").format("YYYY/MM/DD HH:mm:ss"); console.log(foo);
実行
$ node moment.js 2013/12/18 15:01:58
Weekend Company #1
どうもxshsakuです。
さてタイトルですが沖縄でWeekendCompanyという異業種が集まる、「週末を利用して企画~システム構築をしてみよう」というイベントを主催致しました。
参加人数は16名 休日にも関わらず参加いただいた皆さん本当にありがとうございました。
また開催にあたってご支援頂きました@k_nishijimaさん、hogehogebananaさんありがとうございました。
WeekendCompanyの主旨
- 異業種の交流を深める
- 企画、アイディアを考える
- システム(アプリ)を作成し、発信する
の3つを目的として進めてきました。
※週末起業とサブタイトルでありますが、起業しようぜという内容ではありません。
コンテンツ
- 企画持込発表
- 企画構築方法の説明
- 企画構築実践(30分)
- 企画発表
企画発表には私含め3名の発表から始まり、続いて企画構築方法~企画発表を実施。
今回は1ヶ月しか勉強していなかったのですが、私なりのフレームワーク「問題解決型 企画構築」で説明をさせて頂きました。
- 身近なところ(会社や自宅)で起きている面倒なこと(作業など)
- どのくらい面倒なのかを定量化(お金、時間など)
- どうやったら改善されるのか
- 具体案を考える(システムアプローチ)
- 1-4までを通して、結果何が得られるのか?(お金、時間など)
この5項目を1枚のA4用紙に書き込み、企画を発表する実践形式。
人数も2~3名の5チームにて実施
たった30分の短い時間であったにも関わらず、全チーム共に企画考案が出来、発表まで持っていくことが出来ました。
企画内容は?
色んなアイディアを皆さん発表頂きました。
・恋愛に関するアプリ企画
・広告システムに関する企画
・音楽イベントに関するアプリ企画
・エンジニアネットワークに関するアイディア
などなど
問題点を探し出す着眼点やそれらに対する解決案も、集まったチームそれぞれでユニークであり、主催する側が多くの学びを得ました。
システム化するとどれも売れるだろうなー。
次回は?
今回は3時間と多めに時間を取っていたつもりでしたが、ぜんぜん足りなかった><
企画までは出来たがシステム設計まで移ることが出来ませんでした。
次回は参加メンバーから頂いたアンケートを元に入念に計画を練って、望みたいと思います。
反省点・・・
・緊張しまくって最初の小一時間硬い雰囲気になってしまった
⇒ @k_nishijimaさんのフォローのおかげで楽しめる雰囲気が作れた
・コンテンツの時間には余裕を持たせたほうがいい・・・
⇒ 本当に時間がたりなかった。。。
最後の企画発表のときの質問が出来なかった orz
・機器の点検は入念に行っておく
⇒ プロジェクターが度々映らなかったorz
・ネット接続環境は必須。。。
主催すること ※おまけ
個人で主催しましたが結構、お金がかかるんですね。。。
施設料金、備品などもろもろ合わせると1万円ほどかかりました。
ただ、1万円以上の価値がえられました。
まず1ヶ月前にATNDに今回のイベントを開催します告知を出してから(企画未経験者です)
■開催前
・「企画」に関する勉強(全く知識が無いので、本やネットで読み漁る)
・アイディア素材探しに、県内企業の情報を収集
・勉強会用の資料作成(普段行わない画像加工やスライドのデザインに凝ってみる)
■開催後
・参加者との交流、繋がりが持てた事
・参加者の企画案を聞くことによって沢山の知識が得られた(着眼点や解決法、プレゼン方法)
上記を開催予定~勉強会実施までの1ヶ月の短期間で凄く学べました。
※後先を考えずATNDに登録しましたが、人間やれば出来るものですね
勉強会はやはり主催する側が一番学べますね!
覚えがき LAMP環境設定
お名前.comのVPS契約したので、早速LAMP環境構築
#まずはLinuxの環境設定
#UPDATE 必要パッケージインストール $ yum -y update $ yum -y install vim telnet wget traceroute bind-utils \ gcc make patch kernel-devel openssl-devel libxml2-devel libcurl-devel \ vim logwatch sysstat telnet wget traceroute bind-utils gcc make \ patch kernel-devel openssl-devel libxml2-devel libcurl-devel \ libxml2-devel curl-devel libjpeg-devel libpng-devel libvpx-devel \ libmcrypt-devel ncurses-devel make libaio-devel gcc gcc-c++
#セキュア関連
$ vim /etc/sysconfig/ 13: Port 52525 #標準ポート22⇒52525 67: PasswordAuthentication no #YesからNoに変更して鍵認証のみ $ vim /etc/syscnofig/iptables 10: -A INPUT -m state --state NEW -m tcp -p tcp --dport 52525 -j ACCEPT #22⇒52525 $ vim /etc/services 46: ssh 52525/tcp #22⇒52525 47: ssh 52525/udp #22⇒52525
Apacheインストール ※過去のShell適用してインスコ
#!/bin/sh SOURCE="/usr/local/src/source" ARCHIVE="/usr/local/src/archive" cd ${ARCHIVE} #Apache Portable RuntimeのDL wget "http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-1.4.8.tar.gz" #APR-UTILのインストール wget "http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-util-1.5.2.tar.gz" wget "http://sourceforge.jp/frs/g_redir.php?m=jaist&f=%2Fpcre%2Fpcre%2F8.33%2Fpcre-8.33.tar.gz" tar xzf apr-1.4.8.tar.gz -C ${SOURCE} tar xzf apr-util-1.5.2.tar.gz -C ${SOURCE} tar xzf pcre-8.33.tar.gz -C ${SOURCE} cd ${SOURCE}/apr-1.4.8 ./configure make && make install cd ${SOURCE}/apr-util-1.5.2 ./configure \ --with-apr=/usr/local/apr make && make install cd ${SOURCE}/pcre-8.33 ./configure make && make install cd ${ARCHIVE} wget "http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.4.6.tar.gz" tar xzf httpd-2.4.6.tar.gz -C ${SOURCE} cd ${SOURCE}/httpd-2.4.6 ./configure \ --prefix=/usr/local/apache \ --enable-so \ --enable-ssl=/usr/local/openssl \ --enable-proxy=shared \ --enable-rewrite \ --enable-dav \ --enable-ssl make && make install cd ${SOURCE}/httpd-2.4.6/build/rpm cp -a httpd.init /etc/init.d/httpd chkconfig httpd on
眠いのでここまで。FabricとかChefでShellまとめよ。