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

SwiftOCRというOCRライブラリを試してみた

某所で紹介されていたSwiftOCRというライブラリ付属のサンプルを試してみたので一応?

Tesseract より高速、省メモリらしい。一応昨年末の時点でSwift 3にも対応している。

一行のテキスト、それもシリアルナンバーのようなランダム英数字に向いているとのこと。

github.com

githubのissueトラッカーを見る限り、複数行のテキストのOCRには対応していない模様。

日本語の解説は以下が詳しい(というか他に発見できず)。

Swiftで書かれたOCRライブラリ「SwiftOCR」をiOS実機で試してみた - Qiita

付属のプロジェクトを試す

まずは付属のサンプルを試す。shu223氏の記事によると、アルファベットの大文字と数字のみ学習した状態とのこと。

$ git clone https://github.com/garnele007/SwiftOCR.git
$ cd example/iOS/SwiftOCR\ Camera/
$ open SwiftOCR\ Camera.xcodeproj

Xcode が起動するので、スキーマSwiftOCR Cameraに切り替えてビルドしてやれば起動する。

f:id:atuyosi:20170311090752p:plain

下記のエラーに遭遇した場合は、プロジェクトナビゲーターの画面から"Provisioning Profile" を設定する。

Signing for "SwiftOCR Camera" requires a development team. Select a development team in the project editor.
Code signing is required for product type 'Application' in SDK 'iOS 10.2'
Code signing is required for product type 'Application' in SDK 'iOS 10.2'
Code signing is required for product type 'Application' in SDK 'iOS 10.2'

実行した結果。

f:id:atuyosi:20170311092018j:plain

薄いグレーの帯状のエリアにテキストが入るようにして"Take Photo"を押すと画面の上部に認識結果のテキストが表示される。

真ん中下のスライダで拡大倍率を調整できる。

“ISBN4"という文字列に対して"TSBN4"になっている。数字の"3"をすんなり読んでくれないなど不安定。

学習ツールと他の文字種

小文字アルファベット

一度Xcodeを閉じて、SwiftOCR\ Trainingに移動。

$ cd ../../OS\ X/SwiftOCR\ Training
$ open SwiftOCR\ Training.xcodeproj

テキストフィールドに文字列が入力されているのでアルファベットの小文字と数字ハイフン、円記号を追加。

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-¥0123456789

書体は"Times New Roman" とは “Tahoma” とかメジャーな英語用フォントのみ。

小文字と記号の一部を追加しておもむろに"Start Training"。終了すると表示が元に戻るので、"Test"を実行。

“Save"をクリックするとデスクトップにOCR-Networkというファイルが出力される。

むやみに書体を増やすと"Test"の時点で認識率が下がる……。

トレーニング時点で79.2%は不満だけどとりあえず小文字対応版のデータをコピーして実機テスト(斜体フォントなし)

$ cp ~/Desktop/OCR-Network ../../../framework/SwiftOCR/OCR-Network

パスは環境に応じて変更。

swiftOCR.swiftの開いて、 recognizableCharactersを修正

public var recognizableCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-¥0123456789"

必ずトレーニングした時と同じ文字列にすること。

f:id:atuyosi:20170312225113p:plain

文字の種類や順序が学習させた時と異なると、"Take Photo"の直後にエラーで落ちる。

f:id:atuyosi:20170312223615j:plain
イマイチ認識できていない上に、単語と単語のスペースを無視している。


f:id:atuyosi:20170312221251j:plain
数字はそこそこ認識するが、小文字との混同が発生している。

ただ、文字を認識した位置と、他の候補の情報を出力してくれるので、前後が数字なら数字の候補を優先するような後処理ロジックを仕込むことは可能。

SwiftOCR.SwiftOCRRecognizedBlob(charactersWithConfidence: [("a", 0.398129016), ("2", 0.382261425), ("3", 0.0667025894)], boundingBox: (262.0, 20.0, 19.0, 27.0)), 

カタカナ

この辺から文字のリストをサクッと借用。

ヒラギノフォントとか游明朝・游ゴシック体あたりを学習させてみた。

「ひらがな」は試す気が起きず。

ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ

長音符(ー)と中黒(・)が抜けているので注意。

f:id:atuyosi:20170312225037p:plain

トレーニングの時点で43%。小書きカナを除去すると改善するはずだけど、それはそれで違う気もする。

全部「ポ」になって使い物にならず。アルゴリズムの限界なのか?

気になった点

  • アルファベットの小文字を学習させると認識率が下がる(例えば"x"と"X"、"v"と”V”など形状が同じで大きさが違うもの)
  • イタリック体を学習させると認識率が下がる(特にBold Italic)
  • 数字とのゼロと小文字の"o"の判別ミス
  • 小文字を学習させると数字の認識率も下がる
  • 文字と文字がくっついていると認識できない
  • 文字と文字のスペースを認識していない
  • 文字列が複数行になっている場合、1行目しか認識しない

最大の欠点は複数行の認識に対応していない点。

まとめ

認識結果が安定しない印象。確かにメモリ消費も少ない。認識対象の文字がアルファベットの大文字と数字、記号の一部に限定できるケースならなんとか使えそう。ただし、二値化処理と行の検出を自力でやる必要がある。

ただ、Tesseract 3.x も単語辞書をオフにしてやれば似たような使い方はできるし、シリアルナンバー用の学習データも存在している*1

Tesseract もバージョン4系はLSTMベースのニューラルネットワークを採用した結果、高速化しているはずなのでリソース消費量だけが長所だとあまりメリットにはならない。


中途半端な記事になってしまったけど今後に期待。

それでは。

*1:Homebrew のtesseactパッケージのオプションで"snum.traineddata"というファイルをダウンロードできる

ラズパイをプロキシサーバー(キャッシュサーバー)として使う( Raspbian & Squid )

大したネタではないですが備忘録。


複数の仮想マシンapt(あるいはyumとかHomebrewも含めて)で同じパッケージをダウンロードをするケースが結構ある。

Ubuntu 16.04の仮想マシンが複数あるとして、どっちも同じようにapt upgradeを実行すると、同じ修正パッケージを取得することになり、明らかに無駄。

ホスト側でプロキシサーバーを動かして、透過型プロキシもありかと思ったけど、ちょっと面倒だなってことでラズパイを活用してみる。

構成

仮想化ホストマシンと同じサブネット上に接続したラズパイをキャッシュサーバーとして使う。

スループットの面からすると激しくイマイチだけど、どのみち外向けの回線がWiMAX2+なので問題ない。

ラズパイのイーサネットポートは100MbpsなのでIEEE 802.11nWifiの方が速度は出るかもしれない。

要件

  • LAN内部に設置
  • ローカルホストおよび仮想マシン(ゲスト)から接続できればOK
  • ある程度大き目のファイル(100MB〜200MBぐらい)もキャッシュさせたい
  • ラズパイの microSD の空き領域の有効活用(10GBぐらいはキャッシュに使って問題ない)

インストール

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install squid
$ sudo apt install squidclient

squidclientは動作状態をチェックするためのツールです。なくても動作します。

設定

$ sudo vi /etc/squid/squid.conf

修正結果の差分は以下のとおり。

$ sudo diff -N /etc/squid/squid.conf.orig /etc/squid/squid.conf
609,611c609,611
< acl localnet src 10.0.0.0/8   # RFC1918 possible internal network
< acl localnet src 172.16.0.0/12        # RFC1918 possible internal network
< acl localnet src 192.168.0.0/16       # RFC1918 possible internal network
---
> #acl localnet src 10.0.0.0/8  # RFC1918 possible internal network
> #acl localnet src 172.16.0.0/12       # RFC1918 possible internal network
> acl localnet src 192.168.0.0/24       # RFC1918 possible internal network
676c676
< #http_access allow localnet
---
> http_access allow localnet
1738c1738
< # cache_mem 8 MB
---
>  cache_mem 16 MB
1747c1747
< # maximum_object_size_in_memory 8 KB
---
>  maximum_object_size_in_memory 16 KB
1945c1945
< # cache_dir ufs /var/spool/squid 100 16 256
---
>  cache_dir ufs /var/spool/squid 8196 16 256
1988c1988
< # maximum_object_size 20480 KB
---
>  maximum_object_size 204800 KB
3392a3393
> visible_hostname unknown
4699c4700
< # forwarded_for on
---
>  forwarded_for off

要点は、

  • ローカルネットワーク(192.168.0.0/24)からのアクセスを許可
  • キャッシュするファイルのサイズを大きく(maximum_object_size
  • 使用するディスク領域の上限を大きく(cache_dir
  • プロキシ経由であることをアクセス先に通知しない(forwarded_for

下記のコマンドで設定ファイルの書式のチェック。

$ sudo squid -k parse

エラーが出なければプロセスを起動。

$ sudo systemctl start squid

設定ファイルのリファレンス:squid : Optimising Web Delivery

有効化

問題なく動くようなら自動的にsquid起動するようにする。

$ sudo systemctl enable squid

クライアント側の設定

ブラウザからは利用するようにしてもいいが、基本的にaptgitで同じファイルをダウンロードするケースを高速化できればいいので環境変数のみセットする。

VirtualBox 上のゲスト

VirtualBoxの「環境設定」から「プロキシ」タブを選択して「手動設定」で設定する。ゲスト側は気にする必要がない。

コンソール系のツール

一度実行すればあとはコマンド履歴から再実行すればいい。ノートPCを持って外出する場合は環境変数の値を空にする。

export http_proxy=http://プロキシサーバーのIP:3128
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"

ポート番号をデフォルトの"3128"から変更している場合はそれに合わせて修正する。

手作業で環境変数をセットするのが面倒ならArch Linuxにオンオフを切り替えるスクリプトの例が記載されているのでこれを参考にする。

プロキシ設定 - ArchWiki

sudo経由で実行するコマンドは設定しない限り環境変数は引き継がないので注意する(Arch LinuxWikiを参照。

動作状態のチェック

悲しいことにsquidclientコマンドを実行するとIPv6のポートへ接続しようとするのでエラーになる。

$ squidclient -h localhost mgr:mem
client: ERROR: Cannot connect to [::1]:3128: Connection refused

対処法としては-hIPv4のアドレスを指定する。

$ squidclient -h 127.0.0.1 mgr:mem
Sending HTTP request ... done.
HTTP/1.0 200 OK
Server: squid/2.7.STABLE9
Date: Thu, 09 Mar 2017 19:30:52 GMT
Content-Type: text/plain
Expires: Thu, 09 Mar 2017 19:30:52 GMT
X-Cache: MISS from unknown
X-Cache-Lookup: MISS from unknown:3128
Via: 1.0 unknown:3128 (squid/2.7.STABLE9)
Connection: close

Current memory usage:
Pool     Obj Size       Allocated                                        In Use         Idle                     Allocations Saved                       Hit Rate
         (bytes)        (#)      (KB)    high (KB)       high (hrs)      impact (%total)(#)      (KB)    high (KB)       portion (%alloc)       (#)      (KB)    high (KB)     (number)  (%num)  (%vol) (%num)  (number)
2K Buffer                2048    2       4       4       0.42    2       2       4      4        100     0       0       2       28      0.52    5.89    93.33   30
4K Buffer                4096    4       16      16      0.35    7       1       4      16       25      3       12      16      61      1.13    25.65   93.85   65
Store Client Buffer      4096    1       4       4       0.05    2       1       4      4        100     0       0       4       3       0.06    1.26    75.00   4
acl                        48    11      1       1       0.42    0       11      1      1        100     0       0       0       0       0.00    0.00    0.00    11
acl_ip_data                16    5       1       1       0.42    0       5       1      1        100     0       0       0       0       0.00    0.00    0.00    5
acl_list                   12    23      1       1       0.42    0       23      1      1        100     0       0       0       0       0.00    0.00    0.00    23
CacheDigest                24    1       1       1       0.42    0       1       1      1        100     0       0       0       0       0.00    0.00    0.00    1
 <skip>

他にも確認できる項目の一覧を表示する場合は、squidclient -h 127.0.0.1 mgr:を実行。

関連URL

今更な感じもしますが、ないよりマシでしょうってことで。


[2017/03/12 追記] よく考えたらgithub経由のダウンロードはHTTPS経由なんで(プロキシではキャッシュできないので)大した効果はない……。


それではまた。

Tesseract OCR 3.05 のインストールと新機能

2月16日付でオープンソースOCRエンジンである Tesseract OCR の3.05がリリースされています。

2月中に記事にしようと思いつつ結局3月になってしまいました。

github.com

Ubuntu 17.04 の Feature Freeze に間に合わせたいという要望が出た結果、唐突にリリースされたようです*1

実際のところ、Ubuntu 17.04 に採用されるのかどうかは不明です。

変更点

ざっくりいうと一番のメインはTSV出力。あとは諸々のバグ修正。HTML形式の出力*2についても改善しているようです。あとはバグ対応など。

以下、リリースノートからのざっくり訳。

  • hOCR 出力 における改善(微調整)
  • 新しい出力オプションとしてTSVを追加
  • バージョン 3.04.00における AnalyseLayout()メソッドのABI非互換を修正
  • text2image tool : すべてのOpenType リガチャが有効に(この機能にはPango 1.38以降が必要)
  • Training tools : assert関数をtprintf()exit(1)に置き換え
  • Cygwin 環境における互換性問題を修正
  • マルチページのTIFFファイル処理の改善
  • 埋め込みpdfフォントについての改善 (pdf.ttf)
  • コマンドラインからOCRエンジンモード指定するオプションを追加(--oemオプションの追加))
  • tesseractコマンドの、オプション指定形式を ‘-psm’ から ‘–psm’ (ハイフン2つ)に変更
  • 新しいC APIの追加と古いAPIの削除( for orientation and script detection )
  • ビルドに必要なautoconf のバージョンを 2.59 に変更
  • 不要なコードの削除
  • 多数のコンパイラの警告に対処
  • メモリリークおよびリソースリーク*3を修正
  • ‘Cube’ OCR エンジンのバグ修正
  • openCL 関連のバグを修正
  • CMake によるビルドに対応
  • Windows環境向けに CPPAN supportを追加

オプションの指定方法ですが、従来と同じく-psmでもエラーにはなりません。将来的には--psmのようにハイフン2つに移行するはず。

また、--psm オプション*4に指定できる値が追加されています(詳細はtesseract -hで確認)。

text2imageコマンドのmac環境におけるバグは修正されたかと思いきや、4系からのバックポートの余波でリグレッションしているので要注意*5

各種ラッパーの対応状況

すんなり対応したのはJava/Android 系ぐらいで全然進んでいないようです。TSV出力を使わないのであれば、tesseractコマンドを呼び出すタイプのライブラリは普通に動くと思います。

新機能

新機能であるTSV出力を試してみます。認識結果をタブ区切りテキストとして出力する機能という認識です。普通の文書よりは表とか本の目次のような画像データ向き。

$ tesseract -v
tesseract 3.05.00
 leptonica-1.74.1
  libjpeg 8d : libpng 1.6.28 : libtiff 4.0.7 : zlib 1.2.8

手頃な画像が見つからないので適当な画像で試します。

f:id:atuyosi:20170308033249p:plain

電子書籍版の『[改訂第7版]LaTeX2ε美文書作成入門』のp.225の表の一部を切り抜いたもの(実際は幅640pxに拡大)。

実際にtesseractコマンドで試すには、コマンドラインの末尾にtsvを追加して実行。

$ tesseract -l eng resize_table.tiff  stdout tsv 2> /dev/null
level   page_num    block_num   par_num line_num    word_num    left    top width   height  conf    text
1   1   0   0   0   0   0   0   640 146 -1
2   1   1   0   0   0   55  11  30  119 -1
3   1   1   1   0   0   55  11  30  119 -1
4   1   1   1   1   0   55  11  30  16  -1
5   1   1   1   1   1   55  11  30  16  79  pbk
4   1   1   1   2   0   55  45  30  16  -1
5   1   1   1   2   1   55  45  30  16  79  pbk
4   1   1   1   3   0   55  79  30  17  -1
5   1   1   1   3   1   55  79  30  17  78  phk
4   1   1   1   4   0   55  113 30  17  -1
5   1   1   1   4   1   55  113 30  17  79  pbk
2   1   2   0   0   0   220 45  18  12  -1
3   1   2   1   0   0   220 45  18  12  -1
4   1   2   1   1   0   220 45  18  12  -1
5   1   2   1   1   1   220 45  18  12  66  it
2   1   3   0   0   0   220 113 18  12  -1
3   1   3   1   0   0   220 113 18  12  -1
4   1   3   1   1   0   220 113 18  12  -1
5   1   3   1   1   1   220 113 18  12  79  it
2   1   4   0   0   0   303 8   209 118 -1
3   1   4   1   0   0   303 8   209 118 -1
4   1   4   1   1   0   303 8   147 20  -1
5   1   4   1   1   1   303 8   97  15  78  Bookman—
5   1   4   1   1   2   402 8   48  20  74  Light
4   1   4   1   2   0   303 43  186 18  -1
5   1   4   1   2   1   303 43  186 18  75  Bookman—Lighfltalic
4   1   4   1   3   0   303 76  155 15  -1
5   1   4   1   3   1   303 76  155 15  67  Baum-Dem!
4   1   4   1   4   0   303 110 209 16  -1
5   1   4   1   4   1   303 110 209 16  72  Boahmul-Dzmfltaflc

ちょっと認識ミスト取りこぼしが発生してますが、一列目の一行目のセルから順に出力されています(最後の列が認識したテキスト)。 拡大倍率としきい値処理をちゃんとやればちゃんと認識してくれるはずですが、とりあえず確かこんな感じだったはず。

それぞれの列ですが、levelpar_numというのはよくわかりませんが、ヘッダのconfは確からしさ、あとはそのまま。

TSV出力させるために必要なのはtessedit_create_tsvというパラメータなので、さらに挙動をコントロールすることも可能です。

上記のコマンドラインで指定しているtsvの実態は、tessdata/configsディレクトリ配下にあるtsvという設定ファイルです。

$ cat /usr/local/share/tessdata/configs/tsv
tessedit_create_tsv 1
tessedit_pageseg_mode 1

ある程度複雑なレイアウトの画像からテキストを認識する場合に有効だと思います。

各種OS向けパッケージ

Linux

Arch Linux はすでにパッケージが提供されています。

githubのリリースページで配布されているアーカイブは以前と異なり、configureスクリプトが含まれないので./autogen.shを実行する必要がある点に注意。もしくはcmakeを使うことも可能。

Ubuntu 17.04 に採用されるのかと思いきや、17.04 Beta 1 の時点では3.04系のままのようです。

Arch Linux

記憶違いでなければ新バージョンリリースの翌日だか翌々日にはパッケージが提供されていたはず。

$ sudo paceman -S tesseract
$ sudo paceman -S tesseract-data-{eng,jpn}

他の言語についてはpacman -Ss tesseract-dataで検索してインストール。なお、向き判定のosd.traineddataファイルは(Arch Linux のパッケージの場合)、本体と一緒に/usr/share/tessdataにインストールされる。

Ubuntu 16.04

バイナリパッケージは提供されていないのでソースからインストール。 Leptonica についてはバージョン 1.74系が必要です。

まずは必要なライブラリを一式インストールする。

sudo apt install autoconf automake libtool
sudo apt install autoconf-archive
sudo apt install pkg-config
sudo apt install libpng12-dev
sudo apt install libjpeg8-dev
sudo apt install libtiff5-dev
sudo apt install zlib1g-dev
sudo apt install libleptonica-dev

学習用のツールが必要なら下記もインストールしておく。

sudo apt install libicu-dev
sudo apt install libpango1.0-dev
sudo apt install libcairo2-dev

せっかくなのでcmakeを使いたいところだが、CMakeLists.txtというファイルにinstallターゲット用の記述がないのでmake installできない……。

Leptonica のインストール

Ubuntu 17.04用のパッケージをビルドし直すのもありかもしれないが、上書きしてほしくはないのでソースコードからビルドする。

ソースアーカイブgithubから入手する。

Releases · DanBloomberg/leptonica · GitHub

$ tar zxf leptonica-1.74.1.tar.gz 
$ cd leptonica-1.74.1/

ソースアーカイブを展開すると、`autobuild`というスクリプトがあるのでまずこいつを実行。

$ ./autobuild
$ ./configure
$ make -j2
$ sudo make install
$ sudo ldconfig

/usr/local配下にインストールされるはず。

Tesseract のインストール
$ tar zxf tesseract-3.05.00.tar.gz
$ cd tesseract-3.05.00.tar.gz

以前は不要だったような気がするが、./autogen.shを実行してconfigureスクリプトを生成。

$ ./autogen.sh
$ LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" ./configure --with-training-tools
$ make
$ sudo make install
$ sudo ldconfig

学習用のツールが不要な場合はconfigureスクリプトの、--with-training-toolsは必要ない。

$ tesseract --version
tesseract 3.05.00
 leptonica-1.74.1
 libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8

macOS

Homebrew はプルリク投げてみた結果、コメントを削除してマージされた。MacPports は3.04のまま。

以下はHomebrew の場合。

$ brew update
$ brew install  tesseract --with-training-tools

既存の学習済みの言語データしか使わないのであれば--with-training-toolsは不要。

途中でglibがらみでエラーになる場合は、表示されるメッセージの通りにする。

Error: You must `brew link glib` before tesseract can be installed

以下のようにbrew linkコマンドを実行してから上記のコマンドを再度実行する。

$ brew link glib

標準では英語とテキストの方向判別データしかダウンロードされないので、/usr/local/share/tessdata配下にそれぞれの言語別のデータファイルを(3.04用)ダウンロードしてコピーする(後述)。

このパッケージではtesstrain.sh関連ファイルはインストールされないので必要であればソースアーカイブから適当な場所にコピーする。

バグ対策

mac環境固有のバグ対策。
text2imageを実行する、あるいはtesstrain.shを使う場合は、環境変数PANGOCAIRO_BACKENDに値としてfcをセットする。

export コマンドでもいいし、コマンドの先頭にPANGOCAIRO_BACKEND=fcを付加していい。

参考:

$ PANGOCAIRO_BACKEND=fc ./training/tesstrain.sh --lang jpn --langdata_dir ../github_tesseract/langdata/  --training_text ../github_tesseract/langdata/jpn/jpn.training_text --fonts_dir /Library/Fonts/

それぞれのファイルのパスは環境に応じて修正。

なお、mac環境ではtesstrain.shをエディタで編集してmktempgmktempに置き換える必要あり。

Windows

公式ページからリンクされているのは今のところアルファ版であるバージョン4.0になっています。

ドイツの大学の方がビルドしたWindows 向けの開発版バイナリが以下より入手できるようです(3.05devと4.0dev)。ご利用は自己責任で。

github.com

“training tool"に関してはビルドした張本人がWindowsバイナリを使用していないようなので他の環境で。

Cygwin 版の方がトータルで見るとまともかもしれません。

Cygwin Package Search

それぞれの言語別のデータファイル

パッケージ管理ツール経由で取得できる場合はそちらから入手。Homebrew の場合は全部まとめてダウンロードするか、英語と向き判別用のデータだけの2択…。

[2017/03/11 追記]

公式ページに各バージョン(3.03rcを除く)向けのダウンロード用のリンクが記載されたページがあるので必要ならそこからダウンロード。

Data Files · tesseract-ocr/tesseract Wiki · GitHub

[追記ここまで]

GitHub - tesseract-ocr/tessdata at 3.04.00

リポジトリにある最新版は4.00用のファイルなので、3.04.00タグのツリーから取得する。

f:id:atuyosi:20170307165236p:plain

あるいは、言語コードが明らかな場合はwgetでURL直打ち。

$ wget https://github.com/tesseract-ocr/tessdata/raw/3.04.00/jpn.traineddata

jpnの部分を必要な言語に置き換えれば他の言語も取得できます。

ソースからビルドした場合は、/usr/local/share/tessdataにコピー。それ以外の場合はおそらく/usr/share/tessdata*6。 もしくは、環境変数 TESSDATA_PREFIXtessdataディレクトリの一つ上の階層のディレクトリを指定する。

まとめ

もう少しまともな検証用の画像を用意してみたいと思いますがひとまずここまで。

認識精度については3.04系と比較して特に改善していない印象です。バージョン4系に期待しましょうとしか。


何はともあれiOS向けのラッパーの安定板が新規リリースされて欲しいと思う今日この頃です。

それではまた。

*1:非互換云々とメンテナの労力を問題にしていたのは一体なんだったのか

*2:使っていないのでよくわかりません

*3:ファイルハンドラなどの解放もれ

*4: Page Segmentation mode

*5:環境変数ひとつで回避可能

*6:Ubuntuの公式パッケージは違う配置だったはず('/usr/share/tesseract-ocr/tessdata/‘)

言われてみればもう十年

ちょっとよそのブログで十年前に環境が変わって云々というエントリを読んでしまったので。

言われてみれば痛恨の判断ミスしたのは2007年なのか。

某大学の大学院受験も諦めて内部進学にしてのはこの時期。

そんで研究室選びで失敗したのが4月か。


ある意味十一年前の時点でミスっているとも言えるし、2000年の時点でもミスっていたのかもしれない。

まあ十年前の研究室選択はかなり大きいターニングポイントだったと思う。あの時材料系への未練を捨てて情報系にシフトしていたらどうだったのかと思うとモヤモヤする。

情報系にシフトしていたら大学院の推薦は取れなかっただろうし、研究室によっては某ベンチャーでのアルバイトどころではなかったか。

そしてまたもうそろそろ現状打破のための判断を要求されているのか。

なんというか、3月、4月はどうも鬼門らしい。


おしまい。

この冬の光熱費対策の結果について(冷気ストップカーテン)

大した話ではないけど参考記録

11月末に冷気ストップカーテンという製品を6畳間のベランダ*1側の部屋取り付けたので大まかな光熱費の結果報告。

ニトリとかホームセンターで売っているビニールシート状のカーテンです。そしてホームセンターなどで販売されている類似商品の方がAmazonで購入する方が数百円やすかったみたいです(無念)。

この製品をレースのカーテンの下(窓の表面に接触する方)に取り付け、その上にベージュの遮光カーテンという構成。

f:id:atuyosi:20170302172705j:plain

そもそも昨年より自宅にいる時間減っているようなところもあるので厳密な比較ではないし、まともな対照実験ではない点に注意。

薄いビールでカーテンと窓の隙間を塞いだぐらいで効果があるのか疑問でしたが、冒頭の大阪ガスの料金データを見る限り、前年比マイナス20パーセント。

その他に考えられるガス代の減少要因としては下記の通り。

  • ガスファンヒーターの設定温度を前年比-2℃
  • ひざ掛け毛布の活用
  • パスタを茹でる頻度を減らした

3番目がかなり効いている可能性は否定できませんが、さすがにお湯を沸かしてパスタを茹でるぐらいでそこまでインパクトはないと思います。


f:id:atuyosi:20170302171759p:plain

この製品の欠点としたは、

  • 掃除する際にめくりあげないといけないので少し不便
  • 開封後数日は窓に近づくたびにビニール臭*2がする

という点。後者は風呂場で洗っても効果がなく、2、3日陰干しするしかないです。

そのうち匂いが抜けるのか、気にならなくなります。

普段のガス代は春先が3,000円ぐらいで夏場は2,000円代。一昨年は電気ファンヒーターで乗り切ろうとして電気代の請求が来てからびっくりする羽目になった事もありました。


ガス料金自体が値上げされていることも計算に入れると、確実に商品代金の元は取れているはず。

この冬、光熱費が高くついたという方の参考になれば幸いです。

*1:厳密に言うと日本のアパートのあれはバルコニーらしい

*2:Amazonの商品レビューを参照

Kindle Unlimited 振り返り(2017年2月)

今月はカナダの外交についての本が一番。

a244.hateblo.jp

ビジネス系

『カナダの教訓 超大国に屈しない外交』

1992年に書かれた本。文庫版が2012年。

なかなかの良書。今まで存在の知らなかった。

率直に感想を一言で言うと、アメリカ議会……、になる。アメリカ人の物語を読んだことによるリスペクトが3割減ぐらい。

それに引き換えカナダの外交官すごいな。反対派議員の地元の経済に揺さぶりをかけるなんて。

他方、アメリカ大統領のガキっぽさとか、失望を通り越して泣けてくるよ、ケネディ。建国の父の偉大さが霞んでしまうよ。

一部データを最新のものにして欲しかったかな。カナダの貿易における対米比率とか。

カタカナ表記で人物名をググっても出てこないケースがある。なので最初に人物名を出すときにラテン文字表記をカッコ書きで記載して欲しい。
巻末の参考文献リストを見れば著作のある関係者のラテン文字表記は確認できる。

Wikipedia 英語版の関連ページ

間違ってたらごめんなさい。

『メイカーズのエコシステム』

  • URLはリンクとして埋め込んで欲しかった
  • 深圳もすごいが、シンガポールの教育もすごい
  • 5章に「プロダクト・マネージャー」という単語が出てくる
  • 意外にリコーって柔軟な発想ができるのね

“Play"という単語が印象的。あくまでも「遊び」の延長なんだ、向こうは。

これを知るものはこれを好むものに如かず
これを好むものはこれを楽しむものに如かず

と同じことを言っている。

なんかこう、日本の教育はもうダメなのでは? 教員の育成から行かないと。

手遅れ感がハンパ無いです。

もしくは頭の固い中高年を何とかして除去しないと。ゴチャゴチャうるさいのが邪魔できないようにしないと日本ではできないと思う。

「つくるーむ新横」というリコーの事例もなかなか興味深い。部署を問わず利用できる工作機械設備と作業スペース、休憩スペースがワンセットになったもの。

紹介記事(fabcross):深センで見たものづくりの原点——リコーにファブスペースができた理由 | fabcross

社内に賛成派がいる一方で、やはり一定数の中高年が反対派に回ってるの話がものすごく印象的。

こういう新しい取り組みに一番に反対するというか、「人が人を管理することを疑問に思わない」っていう人間は嫌いですね。「部下がサボらないように見張るの」が仕事になっているんでしょうか。「部下をやる気にさせるにはどうするか」という発想を持って欲しいですね。

著作権法ソーシャルメディアを殺す』

著作権法がソーシャルメディアを殺す (PHP新書)

著作権法がソーシャルメディアを殺す (PHP新書)

同じ著者の昨年11月発売の本を読んだ関係でこっちも読みました。

概ね新しい方の著作と基本的な主張は同じで、2012年当時の状況を掴みたい場合でなければ新しい方(Kindle Unlimited 非対象)を読めばいいかな。

キーワードとしては「公共の利益」だろうと思います。

結局、日本の著作権法が旧態然とした既得権益を守ることしか考えていない。誰でもコンテンツを作って公開できる(要するに著作権者になれる)時代にそぐわない。
出版社や音楽レーベルの著作権は保護するくせに、個人(あるいは市民)による著作権はおざなり。

市民を受益者とみなす海外と違って、著作権で金儲けしている出版社や音楽レーベル、放送局」のみが受益者になっている。

結局、組織・団体のための法体系で、市民の利益はないがしろ。これに尽きる。

著作権法が日本をオワコン化させる、ぐらいのタイトルでも良かったのでは無いでしょうか。

語学

『英語じょうずになる事典』

英語じょうずになる事典

英語じょうずになる事典

結局全部は読めなかった。よくある英語についての誤解・間違いに対する解説本としては非常にいい。

技術

『コンピュータグラフィックス [改訂新版]』

コンピュータグラフィックス [改訂新版]

コンピュータグラフィックス [改訂新版]

ざっくり眺めただけ。またいずれじっくり読む必要あり。

マンガ系

『まんがで納得 ナポレオン・ヒル 思考は現実化する』

典型的な漫画プラス解説文形式。トントン拍子過ぎて微妙。

この手の自己啓発本はセミナーに誘導しようという露骨な感じがするが、この本はさほどでもない。

漠然とした目標しかないので活用できるかというと全く自信なし。

『お気の毒ですが、冒険の書は魔王のモノになりました。』

性格の悪い、というか魔王らしい主人公が世界征服を目指して云々というマンガ。軽いエログロ系。退屈しのぎにはなるけど特に奇をてらった設定とかはナシ。

最新の5巻以外が Kindle Unlimited で読める状態。定価で買わなくてよかった系。

シリーズ一覧

雑誌

『月刊MdN 2015年 7月号(特集:絶対フォント感を身につける』

付録の小冊子が本文の後にがっつり収録されている。絶対フォント感そのものはともかく代表的なフォントの概要の解説など一読の価値はある。

手元にキープしておきたいレベル。

日本語用のフォントのみが対象になっているので、代表的な英数字専用のフォントも解説してほしいと思っと。

まとめ

他にも先月から引き続いて英語の本を読んでいる。3月はとりあえず解約。理由は手元にある他の本が全然読めていないから。


それではまた。

今月のお買い物(2017年2月)

通販限定です。主にAmazon

本・コミック

『姉なるもの 1』

某ブログ経由。Kindle 版を購入。

3人兄弟の一番上だけど、姉*1がいたらいいなあと思ってしまった。

主人公に遭遇した存在が、『「大事なものと引き換えに、望むままを与えましょう」』って告げているにもかかわらず、何も「大事なもの」を差し出す描写がない。

最後の最後で大事なものを持ってかれる展開になりそう。きっとそういう伏線なんでしょう。

こういう絵柄は結構好き。多分2巻も買う。

著者本人が新しい試み(?)として Twitter で原稿データ?を公開しているのも特徴。

twitter.com

掲載雑誌がマイナーなのか、タダで配っておいて気に入ったら単行本コースなのか。

魔法使いの嫁 6』

発売されてるのに気がついてなかった。最近どうも展開についていけない。

なんかこう、不思議展開。

『ついったーさん 1<ついったーさん> (コミックアライブ)』

あずまんが大王という4コマ漫画の正統後継者かもしれん。

カバーを外した状態の表紙もしくは裏表紙らしきものが最後の最後に収録されてるように見える*2

参考:あずまんが大王1年生 (少年サンデーコミックススペシャル)

『本好きの下剋上 第一部「本がないなら作ればいい!4」』

本好きの下剋上 第一部「本がないなら作ればいい!4」

本好きの下剋上 第一部「本がないなら作ればいい!4」

程よいデフォルメ加減が素晴らしい。まさに「コミカライズ」という感じがする。

展開も第一部の最初の山かな。明らかに子供とは思えない言動と知るはずのない知識を披露して幼馴染から不審がられる主人公……。

Web小説の方は本編の終了が近い雰囲気だけど、こっちのコミック版はどこまで続くのか。

最後まで行くとなると、このままの絵の雰囲気だとちょっと違和感が出そうなきがする。

『どんどん話すための瞬間英作文トレーニング (CD BOOK)』

どんどん話すための瞬間英作文トレーニング (CD BOOK)

どんどん話すための瞬間英作文トレーニング (CD BOOK)

紙媒体の方。わりとよさそうなので購入。英会話対策として。

のはずだったけど早速三日坊主になっていて非常にまずい。

『モチベーション3.0 持続する「やる気!」をいかに引き出すか (講談社+α文庫)』

翻訳自体は読みやすくて非常に良い。訳者まえがきで翻訳者がプログラミグを頭脳労働ではない単純労働呼ばわりしている点が残念。

文庫の方が安かったので電子版ではなく紙媒体を購入。

『ボールペンでかんたん! プチかわいいイラストが描ける本』

ボールペンでかんたん! プチかわいいイラストが描ける本 (コツがわかる本)

ボールペンでかんたん! プチかわいいイラストが描ける本 (コツがわかる本)

ボールペンイラストのノウハウ本というか見本帳?

アプリのアイコン作成の参考になりそうなので買ってみました。

他にも同じ著者のシリーズ本があるようです。

電子書籍・雑誌

Python機械学習プログラミング 達人データサイエンティストによる理論と実践』

50%オフだったからつい買ってしまった。果たして読み終えることができるでしょうか。

オライリーの解説本の方が良かったのかどうなのか。

iPhoneAndroidアプリ内課金プログラミング完全ガイド 第2版』

iPhone&Androidアプリ内課金プログラミング完全ガイド 第2版

iPhone&Androidアプリ内課金プログラミング完全ガイド 第2版

『Interface(インターフェース) 2017年 03 月号』

電子版を購入。

Interface 2017年3月号 ラズパイにON!Google人工知能/Google人工知能 TensorFlow初体験ガイド【PDF版】 | Tech Village 書庫&販売 - エレクトロニクス分野の電子書籍販売サイト / CQ出版株式会社

『SOFT SKILLS ソフトウェア開発者の人生マニュアル』

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

Kindle 版を購入。 給与交渉から起業、健康管理などソフトウェア開発者の関心ネタを一通り網羅。

フェアユースは経済を救う』

発売タイミングの関係で微妙。

アメリカの大統領選の前に発売されていて、TPPが発効された場合云々という記述の箇所が数箇所ある。トランプ大統領の就任によりTPPの発効の可能性がかなり低くなっている点を踏まえると微妙な感じ。

価格の割に内容が中途な感じで損した気分。2012年ごろに同じ著者で似たようなテーマの本が出ており、そっちはKindle Unlimitedの対象になっているのでそっちで十分という見解。

ガジェット系

microSD

風見鶏という販売者から購入。注文日の翌日に発送、注文から2日後にゆうパケットで到着。

特に問題なし。普通にラズパイで使用中。

普段使いの環境と別のOSを試すときに差し替えて使う運用。

『フラットケーブル 50cm(FFC)』

ラズパイの公式カメラモジュール用のケーブル。もともと付属するケーブルは15cmと短いので差し替えて使用中。

AmazonよりKSYの方が安い*3けど、在庫切れのままで買えない。e-Bayだと200円ぐらいだとちょっと不安なので止むを得ずこちらから購入。

思いっきり折り目がついている点を除けばモノ自体は普通に使えています。まあ背に腹はかえられぬって感じです。

食品等

『のむらの茶園 国産黒烏龍茶

のむらの茶園 国産黒烏龍茶 3g×50袋

のむらの茶園 国産黒烏龍茶 3g×50袋

別に烏龍茶が好きなわけでは全くない。ただ、惣菜とか弁当だと油物が多いので烏龍茶がいいかな、と。あまり美味しくない。

日東紅茶 カフェインレスレモンティー』

時々紅茶が無性に飲みたくなる時がある。まあ妥協そのものですけれど。

紅茶は好きだがカフェイン過剰摂取も怖いということを踏まえた結果です。本当はアールグレイが好きだけど自宅ではうまく淹れられない……。

その昔、何かの勉強会の帰りに大阪の喫茶店で飲んだアールグレイは旨かった。

『アライド One Dish Asia 8分で出来る! シンガポールラクサセット』

アライド One Dish Asia 8分で出来る! シンガポールラクサセット 100g

アライド One Dish Asia 8分で出来る! シンガポールラクサセット 100g

麺が100gでちょっと物足りない。スープはまあまあ。

f:id:atuyosi:20170228185617j:plain

パッケージの体積の割に中身が少ない。自分でラクサペーストとココナッツオイルミルクとビーフン他、具材を揃えた方がいいのかも。

なお、本場のラクサというのを食べたことがないので再現度についてはノーコメント。

室津牡蠣 殻付き牡蠣2kg 漁師直送!朝取れ牡蠣 【幸永丸水産】』

f:id:atuyosi:20170228185401j:plain
こんな感じで蒸し焼きにして食べました。まあ本当の目的は殻のついた状態の牡蠣の画像が欲しかったからなんですが。

2kgで25個ぐらいだったかな。一部は加熱前に殻をむいて、炊き込みご飯用に出しで茹でて保管中。

そのほか

ニチバン スピール膏 うおのめ・たこ ピンポイント 除去タイプ 8枚入』

ウオノメを除去するやつ。

まだ完全除去には至らず。ほとんど痛くないから別にいいけど。

『救急セット ビニールBOXタイプ 』

救急セット ビニールBOXタイプ

救急セット ビニールBOXタイプ

よく考えたら手元になかったので念のため。

以前は自宅に救急セットがあったはずなのだけど、弟が持ち出したのか、古いから捨てたのか。

GUNZE 5本指ソックス』

ユニクロだとゴムの締め付けがキツすぎるし。

同じシリーズ製品で模様のバリエーションが存在するが、EDWINのロゴの位置が微妙なやつがあるので注意*4

この商品は上端のゴムの締め付ける部分の小指側の端にEDWINのロゴがある。

そういえば最近衣類を買っていない気がする。

定期お得便

青汁 30袋

青汁 30袋

前月同様。よく飲むのを忘れる。

*1:ただし美人に限る

*2:普通の電子版だと収録されないカバー裏の漫画かなあ?

*3:送料を除く

*4:確か横ストライプのやつ。ロゴの類は目立たない位置に入れるとか、もうちょっと考慮が欲しい