今日も微速転進

ここではないどこかへ

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月はどうも鬼門らしい。


おしまい。

この冬の光熱費対策の結果について(冷気ストップライナー)

たいした話ではないけど参考記録として。

ニトムズ 冷気ストップライナー超透明2枚入り L

ニトムズ 冷気ストップライナー超透明2枚入り L

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の商品レビューを参照

広告