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

昔から「なんか偉そう」と言われて不思議だったが謎が解けた……

以前からよく礼儀正しいけど「なんか偉そう」と言われる(陰口を叩かれたり)ことがよくあった*1

何が悪いのか具体的に誰も教えてくれないのでどうしようもないので放置しましたがようやく理解にいたった*2

これまでの私の仮説は、「断定口調が多いせい」というもの。

自分の両親のしゃべり方からして断定口調か命令形。子供は親の会話を通して言語を身につけるので必然的に親のしゃべり方をコピーしてしまう。

そのせいで自分も他人と会話する際に無意識に断定口調多めの会話スタイルになる……結果的に「偉そう」という悪印象を持たれる*3

たまたま英語の発音についての本を読んでいたところ、下記のくだりを見つけた。

声が低いと、えらそうで、特に女性はかわいくないといった、男尊女卑の風潮から、高学歴の女性でも高い声をあえて出すような傾向がずっとありました。今でも、その名残があり、外国人には奇異に感じられるようです。

引用元:DVD&CD付 日本人のための英語発音完全教本

男尊女卑についてどうこう言いたいのではなくて、声が低いと偉そうというのを初めて知っったという話。


(英語の時はともかく)日本人相手の時は高めの声を出す練習しろという話なんだろう。

なんというか、遺伝による不利益を努力でカバーしなさいとか理不尽そのもの。

みんな農業やってた時代は問題なかったんだろうと思う。……偉そうにしていても文句を言われない職業を探すか。背が高いと声が低いケースが多いらしいので平均身長の高い国を目指すか。


少なくとも悪印象を持たれたくない相手にはしゃべり方と声のトーンに気をつける方向で。

おしまい。

*1:改善して欲しくて言っているのか嫌味か何かなのかよくわからなかった

*2:わざとやっている訳でもないのにそんなこと言われても言いがかりと一緒

*3:ただし、ブログの記事はちゃんと断定系で言い切れるようにちゃんと調べたうえで断定系にすればいいと思う。

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

ちょっと花粉症気味な今日この頃。

消耗品がプライム会員専用になっていたのでカッとなってAmazonバントリーを利用してみました。 どう見てもダンボールの厚みが異常です。

電子書籍

『[改訂第7版]LaTeX2e 美文書作成入門』

gihyo.jp

Gihyo.jp から電子書籍版(pdf)を購入。

Amazon: [改訂第7版]LaTeX2ε美文書作成入門

半ばお布施に近い感じ。一応購入の動機としては、巻末付録FのAdobe 1-5 全グリフ一覧が目当て(主にOCR的な意味で)。

コンピューター関連の本としては非常に読みやすい本。

『The Sketch Handbook』

www.smashingmagazine.com

英語のSketchの解説書。販売開始時点では電子版は$10だったはずだが、迷っているうちに値下げ期間が終了してしまった。

約$15で為替レートの関係とPayPalの手数料で約1700円。

まだ最初の数ページしか読めてませんが、ボリューム的には非常に良いです。

有料の動画チュートリアル(英語)よりははるかにいい。今の耳の状態だと英語で説明されてもほとんど聞き取れないので活字の方がありがたい*1


一応、無料の動画チュートリアルで字幕を表示できるものが存在する。どっちにしろ英語な訳で。

昨年5月にSketch のライセンス購入してアイコン作成とスクリーショットの加工ぐらいしか使っていないのでどうにかしたい今日この頃。

書籍・雑誌

『インターフェース 2017年5月号』

電子版ではなく紙の方。CDが付録についている関係で。

とりあえずキープしておくかという感じで買いました。

3月号(電子版)を買ったが4月号は買っていないので連載記事が歯抜けになっていてで悩ましいところ。買えば済むけど別にUSB-Cの電気的な詳細知りたい訳じゃないし。

特集記事と付録のCD-ROMはOpenCV 2.2 (3.2でも2.4でもない!!)による画像処理のサンプルと解説。過去記事の焼き直し感が滲み出ている。

画像処理のアルゴリズムの本は多数あるが、実際のソースコードは載ってない。一方、画像処理がテーマのプログラミングの本はOpenCVを使わないサンプル中心。

上記を踏まえるとお、OpenCV入門の最初のとっかかりとしてはいいのかなあ?

よりにもよってOpenCV 2.2で来るか、という感じがする。OpenCV 3.x C言語インタフェースがメンテナンス対象から外れているとのことなので、OpenCV 2.x なのは理解できるのだけど。

連載記事関連のファイルダウンロード:Interface download

なお、CD-ROM収録されている内容はダウンロードできないので電子版購入予定の場合は注意。

『画像処理とパターン認識入門』

画像処理とパターン認識入門 - 基礎からVC#/VC++ .NETによるプロジェクト作成まで

画像処理とパターン認識入門 - 基礎からVC#/VC++ .NETによるプロジェクト作成まで

中古で購入。C++ or C# なのでスルーしていたのだが、アルゴリズムと解説部分だけでも読んでみる価値はありそうってことで購入。とりあえず確保しておけ的な。

同じ著者のよく似たテーマの本と比較すると基礎的な内容に重点を置いている印象。

『マルチメディアビギナーズテキスト 第2版』

マルチメディアビギナーズテキスト

マルチメディアビギナーズテキスト

これも中古で購入。 2001年第2版発行。 購入したのは第2版の4刷(2007年)。

第3章に20ページほどOCR光学文字認識)について解説があるのをGoogle Books で発見したので確保。

いかにも大学の「マルチメディア論」とかそんな感じの名前の講義の教科書になりそうな雰囲気の本だが、意外なことに音声や画像をコンピューターで処理するための要素技術と歴史を解説している内容。

Google Books で一部の内容が読めるので興味があれば。

パターン認識の本は新しいのが出ているし研究も継続しているんだろうけど「文字認識」単体をテーマにしているのは1970年代、1980年代の本ぐらいなので貴重。

フォニックスってなんですか? 発音確認 エクササイズ用CD付』

フォニックスってなんですか? 発音確認 エクササイズ用CD付

フォニックスってなんですか? 発音確認 エクササイズ用CD付

発音記号とアルファベットの対応関係を習得するのがテーマの本。ただし、個別の発音記号の解説は詳しくない。

演習問題あり(回答は末尾のページに記載)。

『このアルファベットはこの発音(及び発音記号)、こういうアルファベットの並び(綴り)の時はこの発音、変化の規則はこうですよ』、というスタイル。

他の発音をテーマにした本を1冊事前に読んでおくか、指導者のフォローが必要だという印象。

内容はともかく、ページ数が少ないのでコストパフォーマンス的にはイマイチ。

英語の発音をテーマにした本の多くは綴りと発音の関係を説明せいているケースが多いので余計にコスパが悪い印象。

例えば後述の、『世界一わかりやすい 英語の発音の授業』。

『世界の非ネイティブエリートがやっている英語勉強法』

世界の非ネイティブエリートがやっている英語勉強法

世界の非ネイティブエリートがやっている英語勉強法

本屋で通常版を買ってからAmazonで文庫版の存在に気づいたという悲しいパターン。

文庫版(Kindleもあり):世界の非ネイティブエリートがやっている英語勉強法 (中経の文庫)

内容的は良さそうだったから買ったのに……ひどいよ。

文庫版があるなら買う前に教えて欲しいよね、リアル書店さんよ。

Amazonのレビューどおり、ほとんど抽象論。やはりAmazonレビューのチェックもしてから買うべきだったかな。

一応、p.119の"can"と"could"の違いの説明など有益な部分もいくつかあったので全く無駄という感じではなかった。

英語教材のガイド本としては優秀。残念なことに紹介されている本やDVDが絶版になっていて入手しづらいものがある。

各セクションの見出しの黄色背景など装丁・組版は好印象。

『CD付 世界一わかりやすい 英語の発音の授業』

CD付 世界一わかりやすい 英語の発音の授業

CD付 世界一わかりやすい 英語の発音の授業

なかなか良い。ある程度発音記号を勉強したことがあるなら非常に有益。

「どうしてこうなるのか」という理由であるとか、歴史的経緯が説明されている箇所もある。

DVD&CDでマスター 英語の発音が正しくなる本というDVD付きの本もなかなか良いのだが、こちらは「どうして」とか似た発音の区別の説明がイマイチ。

その点、こっちの本は予備校の先生だけあって説明が合理的。

装丁は青と黒の2色刷り。紙の質感がいい。

『Swift Macアプリ開発入門―次世代iOSmacOSプログラマーのための』

Swift Macアプリ開発入門―次世代iOS、macOSプログラマーのための

Swift Macアプリ開発入門―次世代iOS、macOSプログラマーのための

とりあえず確保しておいた。

大学の先生が書いた本。ソースコードをダウンロードするためのURLが袋とじだったり、質問への対応は有償と書いてあったり上から目線。

他のSwift解説本がIOSをターゲットにしているのに対して、macOS向けとなっているのが特徴。

そういう点では有意義なので購入。

[2017/04/05 追記]

色々と微妙。古いXcode 向けに書いたものを最低限手直ししたっぽい。

表紙が微妙なんでちょっとどうかと思ったけど最初の1章時点で地雷臭がしてる。

久々にハズレを引いたか。

正誤訂正ページみたいなのもないし……。

ガジェット?

『歌うキーボード ポケット・ミク (学研ムック 大人の科学マガジンシリーズ)』

f:id:atuyosi:20170325223708j:plain

本屋に置いたらしれっと置いてあった謎のアウトレット品。お値段は(ミクだけに)スリーナイン?

「中身は新品同様」と書いてあったのでとりあえず入手*2

ある時に買わないと手に入らないだろうってことで。

そのほか

Amzon パントリーでパスタとかインスタントラーメンを買ったりとか。

風邪気味の時に飲んだ葛根湯はたぶん効果があったと思われる。


久々にユニクロ()で衣類を購入するなど。

年に2回ほど訪れる英語勉強がMyブームな月でした。

結局今月も半田付け工作できず。……もう5月に先送りしよう。


買っただけでほとんど読めていない大物が2冊。洋書が1冊。

雑誌もこれから。先は長い…。

今月も平常運転だったようです。


それでは。

*1:紙媒体か電子化は問わない

*2:新品同様ということは厳密には新品ではない中古品なの?

macOS でPDF分割(コマンドライン編)

以前はpdftk というツールがHomebrew 経由で簡単にインストールできたみたいだが、現在はインストールできない。

開発元のサイト自体は存在しているし、Windows用のバイナリは配布されている。

多分、GCCJavaのサポートを外したとか、諸事情が重なったんだろうと思う。

GUIの場合はOS標準のプレビュー.appを使えば可能

代替手段としてMuPDFというのを試してみる。

MuPDF

インストール

Homebrew はセットアップ済みという前提。MuPDFの本体は特に用はないのでスルーする。

$ brew install mupdf-tools

コマンド一発。

使い方

mutoolコマンドに続けてサブコマンドと引数を指定する形式。詳細はman mutoolで確認のこと。

mutool サブコマンド 入力PDF

サブコマンドによってオプションと引数の形式は異なる。

mutool command man page - mupdf | ManKier

対応している入力ファイルフォーマット

マニュアルページより。

  • PDF
  • XPS
  • cbz (Comic Book Zip ?)
  • epub

PDFとXPSは理解できるがが他はPDFリーダーの仕事かと言われると疑問。便利なのはいいことだけど不思議。

対応している出力ファイルフォーマット

マニュアルページより。

  • 画像ファイル系(pbm、pgm、ppm、pam,、png、tga、pwg、pcl、ps)
  • ベクトル形式のフォーマット(SVG、PDF、 XML (debug trace)
  • 構造家テキスト系(plain text、HTML、structured text (as xml))

知らないファイル形式がいくつかあるが、使わないのでスルーする。

きになる場合は、Wikipedia を参照(特に末尾の表)。

画像ファイルフォーマット - Wikipedia

サブコマンドの一覧

サブコマンドは以下のとおり。一部のサブコマンドを除き、カンマ区切り or ハイフンでのページ範囲指定可能。

  • draw : PDF を1ページずつ画像に変換
  • clean : 壊れたPDFの修復、画像データの圧縮・展開、不要なページの除去
  • extract : PDFに含まれる画像データやフォントを取り出す
  • info : PDFに含まれるリソースの情報を表示する
  • create : “Special comments” を含むテキストファイルから新しいPDFを作成する
  • pages : PDF内のページについてサイズや方向などの情報を表示する
  • poster : PDFの各ページをM x N のタイル上に分割する(名前の通り学会のポスター発表用?)
  • show : PDFに埋め込まれたデータを出力する
  • run : 引数に指定されたJavascript を実行する
  • convert : PDFから他形式に変換(EPUBなど)
  • merge : 複数のPDFを結合して新しいPDFファイルを作成する

具体例

全ての機能を試すのはしんどいので必要なやつだけ。

特定ページを抜き取る

サブコマンドの使い分けがはっきりしないが、1ページ1ファイルで画像化したいならmutool draw、一つのファイルにしたいならmutool cleanか。

指定したページを1ページずつ画像として出力

入力PDFから特定のページを画像として出力する場合はdrawサブコマンドを使う。出力ファイルが複数になる場合は"%d"形式で連番の数字フォーマトをコントロールできる。

実行例:

$ mutool draw -o page%d.png   input.pdf  1,2,3

以下のように1ページ1ファイルで出力される。

$ ls *.png
page1.png page2.png page3.png

ビットマップ系の画像データにする場合は日本語のPDFでも動作する。ただし、下記のような警告が表示される。

warning: not building glyph bbox table for font 'IQKVNB+HiraMinProN-W3' with 22921 glyphs

出力ファイル形式をPDFにした場合は1つのファイルに出力される。この場合、日本語フォントの埋め込まれたPDFでは上手くいかない。

特定のページだけを抜き出して新しいPDFを作成

mutool cleanに続けて「入力ファイル名」、「出力ファイル名」、「ページ範囲」を指定する形式。細かいオプションはマニュアル参照。

実行例:

$ mutool clean  input.pdf  output.pdf 1,2,3

特にオプションを指定しない限り日本語のフォントが埋め込まれていても問題ない。

まとめ

他の機能も機会があれば説明を追加するかも。


とりあえずここまで。

Java のインストールとプラグインの無効化(macOS Sierra)

不本意ながら Java のランタイムをインストールしたのでメモ。Java依存のツールを使いたいのであって、断固としてJava が使いたいわけではない。

本音を言うと断固排除したい。


インストール自体は Homebrew 経由なのでコマンド一発。

インストール

$ brew cask install java

念のため、正常にインストールできたかどうか確認。

$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

ハイフンは一個なので注意。

忘れずにブラウザ側でプラグイン無効化する(後述)。

brew-cask側の都合でアップデート時は一旦削除して再度インストールし直す必要あり。

オラクルのWebサイトで配布されているインストーラーを使う方がいいという考え方もある。

無料Javaソフトウェアをダウンロード

プラグインの無効化

全体

画面右上のリンゴのアイコンをクリックし、表示されるメニューの「システム環境設定」と言う項目をクリック。

設定項目別のアイコンが表示されているので、左下の「Java」と言うアイコンをクリック(しばらく待つ)。

f:id:atuyosi:20170329091129p:plain

Java の設定画面が表示されるので、ウィンドウ上部にある「セキュリティ」タブをクリック。

f:id:atuyosi:20170329091337p:plain

「ブラウザでJavaを有効にする」という項目のチェックを外し、「適用」をクリック。

f:id:atuyosi:20170329100346p:plain

設定変更のためにパスワード入力を要求されるので素直に入力。

「一般」タブに戻って状態が無効になっていることを確認する。

f:id:atuyosi:20170329101016p:plain

Safari

デフォルトで無効のはず。

Javaをインストール後、Safariを再起動すると以下のポップアップが表示される(この状態で既に無効になっている)。

f:id:atuyosi:20170329142416p:plain

プラグイン全部無効にするか、Javaだけ無効にすることもできる。Java側の設定画面で禁止しておきさえすれば二重に無効にする必要はないかもしれませんが、アップデートのタイミングで(Java側の)デフォルトが変更されると怖いのでブラウザ側でも設定します。

基本的にプラグイン全部無効の状態にしています。普段使いはGoogle Chrome、インターネットバンキングやブログ記事の作成はSafariという使い分けなので問題ない。

プラグインを全部無効にする場合

f:id:atuyosi:20170329142434p:plain

Safariの環境設定メニュー(Command+ “, ")から「セキュリティ」タブの「プラグインを許可」というチェックボックスをオフに。

特定のプラグインだけ無効にする

どうしても他に必要なプラグインがある場合は、Javaのみ無効にすることも可能。そういう場合は前述のチェックボックスをオンにして「プラグイン設定」をクリック。

f:id:atuyosi:20170329143448p:plain

f:id:atuyosi:20170329142533p:plain

Java の項目のチェックボックスをオフに。

Javaプラグイン自体は有効にしつつ特定のドメインのみ禁止したり許可したりすることも可能なようです。

Google Chrome

バージョン42からデフォルトで無効。バージョン45からプラグイン用のAPI自体がサポートされていないはず。

API自体の廃止は賛否両論あるだろうけどセキュリティ面からすると好都合。問題ない。

参考URL

ラズパイ3と microSD あれこれ

ただの動作報告みたいなものです。

先に結論。Transcend製のmicroSDddコマンドと相性が悪いか、もしくはラズパイと相性の悪いハズレ個体がある模様。どうも東芝製のmicroSDが一番無難。

東芝の経営が大丈夫かというのはともかく、microSDは安定しているようです。

TranscendmicroSD 関連

発生する症状は下記の通り。現象はRaspbianとopenSUSEで発生。SDカードリーダーに問題があるとは思えない。

  • 初回起動時の、起動プロセスのどこかで失敗
  • 問題なく動作するが、再起動後に起動プロセスのどこかでストップする
  • 問題が必ず発生する訳ではない
  • 問題を起こしてmicroSDを他の用途に使う分には不具合は起きなかったりする*1

年属で大量にデータを書き込んだ場合など、熱がこもるとおかしくなるのか、もしくはラズパイのトリッキーな起動プロセスと相性が悪いのかは判断できず。

必ず起きる訳じゃなくて、不定期に発生するのでたちが悪い……。発生すると大抵ファイルの破損を伴うのでddコマンドによるディスクイメージの書き込みからやり直しになる。

結局、セット商品として購入時についてきた海外マイナーブランドのmicroSDが大活躍。東芝製のmicroSDを購入したので移行中です。


以下、TranscendmicroSDに関する不具合事例(ラズパイ2を含む)。

ddコマンドでインストールした場合は上手くいかなくても、NOOBSというツールを使ってセットアップした場合は問題なかったというブログ記事も見た覚えあり。

動作報告情報

やや古い情報も混じっているが下記のページが網羅的にまとめられてる(英語)。

RPi SD cards - eLinux.org

どのメーカーについても相性問題の報告があるのでこのメーカーなら安全とは言い切れないように見える。
別メーカーのOEM製品の可能性もあるし。

ラズパイ2、3ともにToshibaSandiskPanasonicあたりが確実。

ただし、ラズパイ3とSandiskの組み合わせででダメだったという報告例あり

デジカメとかスマホのお下がり品のmicroSDで試してみるのが一番かも。

動作した microSD の詳細情報

手元にあるmicroSD で動作したものを記載しておきます。

Linuxから確認できるデバイス情報をチェックする。方法は、前記のサイトの方法。

$ cd /sys/class/mmc_host/mmc?/mmc?:*
$ echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"

各項目の意味は、カーネルのドキュメント参照。

https://www.kernel.org/doc/Documentation/mmc/mmc-dev-attrs.txt

MIXZA

液晶とラズパイのセット商品に付属してきたやつ。地味に高性能。単品でも購入できるがちょっと未知数。

f:id:atuyosi:20170328003500j:plain:w320

[asin:B01JO5I3RI:detail]

別の販売業者も存在しているが取扱終了になっている。

“MIXZA TOHAOLL” とかで検索されたし。

カード裏面にはMade in TAIWANと記載。

香港の会社みたいだが詳細不詳。だって中国語のページしかないし。

レビューを記載しているサイトにあるパッケージ画像を見る限り、

Produced by: Hong Kong Mixza Industrial Limited.
Agent Company: Shenzhen YEHENO Electronic Limited.

$ echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"
man:0x00009c oem:0x534f name:USD00 hwrev:0x0 fwrev:0x2

2行目がmanufacture id などカードの製造元の情報。番号に対応する企業名は公開されていない。

elinux.orgで確認するとSonyの64GB品と同じ結果が出てる。……そんなアホな。

OEM元の製造工場が同じなのか、あるいはどちらかがコピー品とか?

Toshiba

ググってみた範囲では低速モデルについては結構実績がある。

class 10規格の製品のみ注目すると、読出し速度で40MB/s、48MB/s、90MB/s*2、95MB/sとグレードごとにかなり差がある。270MB/s*3って製品もある。 ラズパイ側のmicroSDカードリーダー自体が高速規格に対応していないので意味がないけど。

東芝 microSDHC 32GB Speed class10/ UHS-I class3 最大90MB/s 高速のEXCERIAシリーズ THN-M302R0320C4 [並行輸入品]

f:id:atuyosi:20170328003625j:plain:w320

「風見鶏 -カザミドリ-」という販売業者から購入。

$ cd  /sys/class/mmc_host/mmc0/mmc?:*
$ echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"
man:0x000002 oem:0x544d name:SA32G hwrev:0x2 fwrev:0x5

製品情報ページを見ると、一部の商品は生産終了になっている。

Sandisk

ダメだったという報告が存在しますが、私の手元にあるものは問題ないです。型番次第なのか個体差なのか不明。

私が入手した海外パッケージ品は問題なく動作しています。

f:id:atuyosi:20170328003852j:plain:w320

「風見鶏 -カザミドリ-」という販売業者から購入。

型番:SanDisk microSDHC Ultra 80MB/s 32GB UHS-I SDSQUNC-032G

$ cd /sys/class/mmc_host/mmc0/mmc?:*
$ echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"
man:0x000003 oem:0x5344 name:ACLCD hwrev:0x8 fwrev:0x0

相性問題の報告のあったモデルとは少なくともnameが違う。

先頭の0x000003はサンディスクらしいので問題ない。どこの工場なのか、とか他は特定できず。

その他

高耐久とか動作保証とかいうのもあるけど、保証期間1年だったり書き込み速度がイマイチだったりして微妙。

当面は東芝製のmicroSDが一番確実ではないでしょうか。

参考URL

  • SDカード : 一部のブランドの、Manufacturer ID (MID/manid) が記載されてる

manufacture id は松下が0x000001東芝0x000002SanDisk0x000003なのは確実なようです。


おしまい。

*1:大量にいデータを書き込まなければ顕在化しないだけかも

*2:製品リストにはないので海外用?

*3:UHS-II インターフェース対応製品使用時

なんとなく ABBYY Cloud OCR SDK を試してみた

ABBYY Cloud OCR SDK、日本語の情報が全然ないみたいなのでちょっと試してみる。

ぶっちゃけると認識率云々よりも料金体系的にあまり使い勝手がよろしくない。

概要など

ABBYYという会社は画像から文字を読み取るとかテキストの翻訳技術を手がけるソフトウェア会社。ABBYY Fine Reader ぐらいしか知らない。 日本だとシャープとか東芝と提携したというニュースを見た記憶がある。

このエントリで対象にしているのは、老舗のOCRソフトウェアの会社(たぶん)の、文字認識機能を提供するWeb API

ocrsdk.com

リファレンス:OCR SDK API Reference

モバイル向けの別の選択肢

上記のAPIとは別に(Cloudではない)モバイル向けのエンジンもあるみたいだけどそっちはめんどくさそうなのでスルー。

1つ目は方は法人向けで個人開発者は相手にする気なさそう。2つ目の方は販売数5,000までは無料らしいが、CJK(つまりい日中韓)は拡張パッケージだと書いてある。

開発者向けの評価プログラム(free trial)

登録すると月間50リクエスト(A4?)までならクレジットカードの登録不要で試せる。

Tweet したりすると月間利用枠が増えるみたいだが試していない。

とりあえず登録

f:id:atuyosi:20170319174512p:plain

ドメイン名が"abbyy.com"ではないので不安な感じは否めないが、whois的にはバッチリABBYYだったので大丈夫なはずである。

画面中央の"Start free trial now"というボタンをクリックすると、メールアドレスとパスワード、CAPTCHAの入力画面に移動する。

f:id:atuyosi:20170319174544p:plain

まずはPrivacy Notice のリンクをクリックして内容を確認する。

Facebook または Google のアカウントでもいいみたいだが、ひとまずそういう用途向けのメールアドレス*1で登録する。

詳細入力

詳細入力画面は特に変な項目はない。こんなアプリを作りたいんです云々と入れておけば良い。自動的にメールが来るので内容はどうでもいいのではないだろうか。

重要なのはABBYY CLOUD OCR SDK DEVELOPER AGREEMENT 2016

f:id:atuyosi:20170319174735p:plain

“Submit"を押す。

Application ID

Application名を聞いてくるので適当な名前をつける。

f:id:atuyosi:20170319174844p:plain

あとでApplication ID としてAPIの呼び出しの際に必要になるのであまり短くないほうがいいだろうと思う。

“Create Application” を押す。

登録完了

メールでパスワードが送られてくる。そのまま進むには"Proceed"というリンクをクリックすればいい。

f:id:atuyosi:20170319175138j:plain

使ってみる

気軽に試すだけならデモページがあるのでそっちでも良いと思う。

とりあえずサンプルがgithubで公開されているので動かしてみる。

ocrsdk.com/Python at master · abbyysdk/ocrsdk.com · GitHub

もしくは、Code Sample のページからダウンロードする。

Code Samples

残念ながらPython 2.x のスクリプト

準備

process.pyというのが実行用のスクリプトで、残りはライブラリになっている。

Python版のスクリプト環境変数からAPI呼び出しに必要なIDとパスワードを読み取る仕様なので、 ABBYY_APPID と``をセットする。

$ export ABBYY_APPID=登録時に指定したApplicationの名称
$ export ABBYY_PWD=送られてきたメールに記載のパスワード

結果

使用した画像。

f:id:atuyosi:20170319165142p:plain

実行コマンド例。出力フォーマットはテキスト以外にPDF、XML、docx、RTFが選択できる。自分でAPIのオプションをセットするなら他にも色々できる。

$ python2.7 process.py -l Japanese -txt misc_trial_special.png test01.txt
Uploading..
Id = XXXXXXXX-YYYY-XXXXX-ZZZZ-XXXXXXXXXXXX
Status = Queued
Waiting...Status = Completed
Result was written to test01.txt

Id は伏せています。画像をアップロードしたあと、キューに投入してから結果を返すようなAPIになっています。

丸囲み文字

①②③④⑤⑥⑦⑧⑨⑩
-问日(:特殊文字
睇糙好铖キ。Iン奴2,トンぐ鉍玟”辟、?ン& ^
-似たような漢字の中に紛れ込ませると?
型璧莖型型莖壁璧壁型壁璧壁型型型型(10以)
壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(12卩卞)
壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(14的)
-完璧の璧を壁に変えてみると?
完型な人問はいない。(1〇口1)
完壁な人間はいない(14|31:)
-下線
我灌は猫である。名前はまだない。
-傍点
我輩は猫である。名前はまだない。
-その他
吾36は猫である。逛はまだない。
漢字にルビを振る。重&するデータを削除する。順風満帆。

意外とミスってる。画像サイズの問題なのか?


言語の指定方法をJapanese+Englishに変更して再実行。

$ python2.7 process.py -l "Japanese,English"  -txt misc_trial_special.png test02.txt

結果は以下。

丸囲み文字

①②③④⑤⑥⑦⑧⑨⑩
• NEC特殊文字
_糙好铖キ。r奴rトンr鉍_はr辟t ?ン&鉍?r
•似たような漢字の中に紛れ込ませると?
型璧莖型型®壁璧壁型壁璧壁型型型型(10pt)
壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(12pt)
壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(I4pt)
•完璧の璧を壁に変えてみると?
完型な人問はいない。(10pt)
完壁な人間はいない(14pt)
•下線
我«は猫である。名前はまだない。
•傍点
我輩は猫である。名前はまだない。
•その他
吾Sは猫である。_はまだない。
漢字にルビを振る。重&するデータを削除する。順風満帆。

目につく認識ミスと特徴は以下のとおり。

  • 「・(中黒)」がハイフンになったり、「•(U+2022)」になったり安定しない
  • 言語の指定が"Japanese"の場合、英単語を認識してくれない
  • 背景に色のついている箇所、黒地に白の箇所で認識ミスを起こしている
  • ルビを無視している
  • NEC特殊文字は認識できていない*2
  • 下線とルビ付きのテキストで認識ミスを起こしている
  • テキスト形式で出力させるとBOM(Byte Order Mark)がついてる
  • 文字サイズが小さいと認識ミスを起こしやすい?

前回のMicrosoftAPIと比較すると、取りこぼしは少ない(ふりがなだけ)が、細々と認識ミスがある。それと言語を自動判定してくれない。

リファレンスを見てもファイルサイズの制限はなく、解像度の上限しか記載がないので、ある程度解像度の高い画像が前提なのかもしれない。

Knowledge Base によると30MBまでのファイルに対応しているらしい。

Cloud OCR SDK limitations for input files

完璧の「璧」を意図的に「(かべ)」置き換えたケースで素直に壁と認識している。逆にいうと辞書による変換結果の補正はしてないのだろうか?

欠点

何と言っても価格体系。純粋な従量課金がないので営業担当者と相談になってしまう。紙の面積ベースで価格表示されてもなあ。

Plans and Pricing

一応、事前に料金を払うプラン*3と、毎月支払うプランの2種類ある。リクエスト数の上限次第で価格が変わるが、不特定多数に提供するようなアプリなりWebサービスにすることを考えると要お問い合わせコース。

そのほか

Microsoft のAzure 上で動いているらしい。

iOSに関してはCocoaPods 経由で非公式のライブラリ(Objective-C)がインストールできる。詳細はpod search OCRSDKClient。ただし、メンテナンスされていないように見える。

また、github で各種言語のサンプルが公開されている。

GitHub - abbyysdk/ocrsdk.com: ABBYY Cloud OCR SDK

npmのパッケージも存在する。

abbyy-ocr

ユーザーフォーラムが503 Service Unavailableなのは地味につらい。

感想など

文字サイズが小さいと認識結果がよろしくない印象だが出力フォーマットのPDFおよぼdocxは魅力的。やはり価格がネック。そういう点では毎月1000リクエストまで無料のGoogle Cloud Vision APIの方が使い勝手は良さげ。

他のAPIと合わせてJIS第3水準などの漢字のカバー率は別途チェックしておきたい。


ざっくり試した感想としては以上です。

FineReader OCR Pro

FineReader OCR Pro

  • ABBYY
  • 仕事効率化
  • ¥13,800

*1:漏洩しても困らないメールアドレスにしておけば怖くない

*2:機種依存文字だし使用頻度も高くないので問題ない

*3:ただし有効期限あり

Microsoft Cognitive ServicesのOCR API を試す(Computer Vision API) その1

世間は機械学習やら動画解析APIで盛り上がっているような感じですが、いつも通り周回遅れで。

去年から試そうと思いながらアカウントが作れず*1に放置状態だった。今更だけどネタにしてみる。

azure.microsoft.com

以前英語のページから登録しようとした時は、IE以外のブラウザではダメなのか、うまくいかなかった。

c.f. Microsoft Cognitive Services「Computer Vision API」を使ってOCR認識を試す - 吉田の備忘録

実際に日本語の認識も含めてテストしている方のエントリがあるので詳細は下記を参照。

azure-recipe.kc-cloud.jp


以下、目次

概要

そもそもMicrosoftOCR関係のAPIとしては、私の知る限りでは下記の3つ。

この記事で試しているのは2番目。3番目は動画用のAPIらしい。

Cognitive Services についてはどうやら2015年あたりにProject Oxfordという名称で発表されたシロモノで、MSの画像などのデータを解析して何かをするサービスの総称。
人工知能とか機械学習がどう使われているかはともかく、今時の流行を踏まえて"Cognitive"という単語を使った名称にしたのだろうと思う。

Computer Vision APIはそのうちの画像を解析・認識するAPI。まだ「プレビュー」という位置付けなので仕様や料金体系は変化すると思われます。

日本語の解説は下記のサイトが詳しい。

Microsoft Cognitive Services(マイクロソフト認知サービスAPI)まとめ | 蒼いねずみのお仕事

APIの詳細

公式リファレンスがすっきりしていてわかりやすい(英語だけど)。ページの最後あたりに各言語のサンプルもある。

Cognitive Services APIs Reference

文字の方向などの情報と、文字の含まれる領域、行、単語、という形で結果が返ってくる。行および単語というのはGoogle Vision APIより細かい単位。

日本語は分かち書きしないので、単語イコール文字。

利用条件など

Free と Standard の2種類の料金プランがある。Free の場合はデータをサービスの向上に提供することに同意する必要あり。

Freeの場合はComputer Vision APIについては1分あたり20リクエスト、一ヶ月あたり5000リクエストまで無料で利用可能*2

APIの有効化およびAPIキーの取得

準備

英語ページのリンクからは登録できなかったので日本語のAzure のページからSkype 用に作成したMicrosoft アカウントで登録。

Computer Vision — 画像処理および画像分析 | Microsoft Azure

流れとしてはAzure にユーザー登録し、そのあとにCognitive Service を有効にする。


注意点としては、SMSによる認証画面では電話番号の先頭のゼロを取った方がスムーズだと思う。先頭のゼロを最後まで電話番号を入力できるが、よく見ると先頭2桁でスペースが入っている。

  • uBlock origin とかAdblock は無効化しておく
  • 「¥20,500 無料クレジット」とやらは有効期限が30日とG社よりケチくさいので注意が必要。

API の有効化

Azure のダッシュボードにログインし、左側のメニューからプラス記号のアイコンをクリック。検索ボックスに「Cognitive Services API」と打ち込むとMarket Place のアイテムがリストに表示されるのでそれをクリックする。

f:id:atuyosi:20170307010518p:plain

f:id:atuyosi:20170307010248p:plain

説明を読んで「作成」をクリックする。

必要な情報を入力する。注意点としては、無料のプレビューとして利用する場合は、「ユーザーがAPI経由で送信したデータをAPIの改善のためにMicrosoftに提供することに同意」する必要がある。

あとは以下の画像を参考に。

f:id:atuyosi:20170307005436p:plain

APIキーの取得

f:id:atuyosi:20170307014741p:plain

初回作成時は自動的にAPIのダッシュボードに移動するはず。しない場合は、ダッシュボードのサブスクリプション一覧から該当するもの*3を選択する。

f:id:atuyosi:20170307014556p:plain
左側のメニューの一覧から"Key"をクリックするとお目当のAPIキーが表示される。

f:id:atuyosi:20170307015151p:plain

とりあえず試す

リファレンスのサンプルをちょこっと改変して使用します。

画像は過去にGoogle の Vison API を試した時のもの。適当にスクリーンショットを切り出したもの(過去記事参照)。

今更だけどGoogle Cloud Vision APIでOCR その1 - ながいものには、まかれたくない

今更だけどGoogle Cloud Vision APIでOCR (その2) - ながいものには、まかれたくない

改変したスクリプト

リファレンスマニュアルに記載されているPythonスクリプトを以下のように改変。

Modified Python Script for MS Computer Vision API …

実行してみる

APIキーは環境変数から取得するようにしているので、下記のようにして値をセット。

$ export MSCV_API_KEY="取得したAPIキー"

下記のようにファイル名を指定して実行。

$ python3 test.py 画像ファイル名

結果 その1

f:id:atuyosi:20170316012830p:plain

$ python3 do_ocr_ms.py test1.png
region: 72,69,599,44
line: 72,69,599,18
お前に足りないものは・・・、それは!!情熱思想理念頭脳気品優雅さ動勉さ!!

line: 89,97,318,16
そしてなによりもオ!!速さが足りない!!

認識ミスは一箇所だけ。小書きカタカナのだけで、あとはが3文字に展開されているのみ。非常に優秀。

結果 その2

f:id:atuyosi:20170316015100p:plain

$ python3 do_ocr_ms.py test4.png
region: 69,48,531,568
line: 70,48,120,18
字形が似ている

line: 70,102,326,14
叱U+53F1叱U+20B9F叱咤激励叱咤激

line: 69,153,105,17
第ニ水準漢字

line: 69,205,157,18
倅・伜・悴せがれ

line: 70,257,285,18
弐萬円虞美人草「朕は国家なり」

line: 69,310,227,18
檳榔(ビンロウ)、刀劍亂舞

line: 70,363,226,17
囹、圀、囿、圄、圉、圏、圍

line: 70,415,389,18
坩堝(るっぽ)、妲己(だっき)、骨嵬(くがい)

line: 69,468,105,17
第三水準漢字

line: 69,521,531,17
鄧小平(とうしようへい)、任侠(にんきよう)、王嘉(オウテッ)

line: 70,573,232,17
吐囈喇列島(とかられっとう)

line: 81,599,484,17
(ロ之島・中之島・平島・諏訪之瀬島・悪石島・小宝島・宝島)

認識ミスは「任俠」の「俠」、「吐噶喇列島」の「噶」。

Google Vision APIで認識できなかった囗(くにがまえ)シリーズをきっちり認識している点は非常に良い。

叱咤激励については、全部U+53F1で認識されています。厳密には「𠮟咤激励」の方が正しいらしいですが、Google先生Microsoft様も一般的に普及した方を提示されるとのこと。

文字化けリスクを考えたら仕方ないのか。しかしOCRエンジンとしてそれでいいのか?

まあ、早くガラケーにトドメを刺してくださいって話。

結果 その3

f:id:atuyosi:20170316235054p:plain

文字サイズは画面上におけるポイント数、つまり相対サイズでしかないです。

$ python3 do_ocr_ms.py misc_trial2.png
region: 70,93,370,403
line: 70,93,44,14
絵文字

line: 71,190,153,17
文字サイズ(6pt-18pt)

line: 70,260,164,10
2完第主義、高を、第中既第を

line: 70,290,206,12
ふ完主義、憂鬱、誹嵭中傷、薔瓦

line: 70,328,247,15
4.完劈主義、憂鬱、誹謗中傷、薔薇。

line: 71,373,287,17
5.完璧主義、憂鬱、誹謗中、薔薇。

line: 71,422,328,19
6.完璧主義、憂鬱、誹謗中傷、薔薇。

line: 71,474,369,22
7.完璧主義、憂鬱、誹謗中傷、薔薇。

絵文字は全滅。文字サイズが小さい場合(6pt)まったく認識できないみたい。中途半端なサイズ(8、10pt)で「璧」と「傷」の字を認識できていない。

結果 その4

f:id:atuyosi:20170317000131p:plain

$ python3 do_ocr_ms.py misc_trial_special.png
region: 70,31,362,554
line: 71,31,67,13
丸囲み文字

line: 84,73,179,14
①②③④⑤⑥⑦⑧⑨⑩

line: 75,116,93,13
・NEC特殊文字

line: 102,158,320,13
朝%空トン弊ドル卩第

line: 75,201,253,13
・似たような漢字の中に紛れ込ませると?

line: 70,242,259,14
壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁いOpt)

line: 71,284,361,19
壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(14pt)

line: 75,332,197,13
・完璧の璧を壁に変えてみると?

line: 71,374,170,14
完壁な人問はいない。(10pt)

line: 71,393,221,19
完壁な人間はいない(14pt)

line: 84,483,211,13
我輩は猫である。名前はまだない。

line: 75,526,35,13
・傍点

line: 84,568,269,17
我輩は猫である。名前はまだない。

region: 75,616,49,37
line: 75,616,49,13
・その他

line: 112,641,12,12
は

region: 195,640,25,13
line: 195,640,25,13
名前

region: 84,683,362,14
line: 84,683,362,14
漢字にルビを振る。重複するデ-タを削除する。順風満帆。

結果の概要としては以下の通り。

  • 丸囲み数字(丸付き数字)は認識できる
  • NEC特殊文字の「㍻」や「㍍」の類は認識できていない(「㌔」と「㌦」はそれぞれ2文字で認識)
  • 完璧の「璧」と「壁」を判別している(なぜか1行ロストしている)
  • アンダーライン・傍点については問題ない
  • ルビ(振り仮名)は綺麗に無視
  • 青背景はダメだが、黒地に白は認識できる
  • という単語が丸ごと認識されていない

文字領域の切り出しに失敗して認識できていない行が二箇所ある。特殊文字については微妙な結果。

Google Vision API との比較

どっちもどっちという印象。ざっくり試した範囲では、Microsoft の方は取りこぼしが発生しやすいが、文字と判定した部分については細かい差異を判別している。

MicrosoftAPI は(GoogleAPIで認識できなかった)、「①」とか「②」をきっちり認識している。 一方、NEC特殊文字についてはGoogleOCR API の方が認識できていた*4

おわりに

サンプル数が少ないですが、GoogleOCR API といい勝負。どっちにしろTesseract よりははるかに高精度。

さすがに文字サイズが小さい場合に認識率が良くないのは仕方ない。

あとはもう少し解像度の高い画像データとまとまった文章での比較は試したいと思います。

グダグダですが、(たぶん)続きます。


とりあえずここまで。

追記(2017/04/05)

表形式データの場合

罫線のない表形式データで試してみたところ、左側からそれぞれの列ごとに上から下に読み取った結果が返ってくる。

f:id:atuyosi:20170405163146p:plain

上の画像だと左端の数字の列の全ての行のあとに2列目の全ての行、3列目の全ての行という順序でデータが返ってくる。

未加工のJSONデータを取り損ねたので結果のデータは省略。

API の利用停止

ダッシュボードから対象APIをクリックすると Overview という画面に遷移するので、中央の情報表示エリアの左上にあるDeleteをクリックするだけ。

f:id:atuyosi:20170405164650p:plain

5分ほど各種メニューを彷徨ったが、非常にわかりやすい箇所にあったのでびっくりした。まさかそんなわかりやすい位置にあるとは夢にも思わず。

罫線ありの場合は未検証。

関連URL

入門 Python 3

入門 Python 3

*1:ブラウザによるのか、広告ブロッカーのせいだったのかよく分からない

*2:ただし、送信したデータをAPIの精度向上に提供することについて同意する必要がある

*3:プロジェクト名みたいなもの

*4:2文字に展開されるのは仕方ない