Tesseract.jsを使ってみる

javascript用のOCR(画像内の文字を抽出)ライブラリです。
ブラウザでも利用可能のようです。

今回はnode.jsでやってみます。

画像は[以前書いた記事](http://qiita.com/yamayamasan/items/ebbef047723cf1e20aa4)の一部をキャプチャしたものを使用しています。

⇓こちらが今回使用する画像です。

![sample.png](https://qiita-image-store.s3.amazonaws.com/0/128173/13842400-8aac-c3e5-264f-ad99328fead2.png)


### 環境

| module  | version |
|:---:|:----:|
| node | 6.1.0 |
| tesseract.js | 1.0.10|
### ソース

```js:index.js
const Tesseract = require('tesseract.js');                                      

const image = './sample.png';

Tesseract.recognize(image, {
  lang: 'jpn'
})
.progress((p) => {
  console.log('p: ', p);
})
.then((res) => {
  console.log('res: ', res.text);
  process.exit(0);
});
```

### 実行
```js
node index.js
```
結果

```text
最近n。der姶めたの者です〝とは言ってもプログラマ歴もまだ浅いのですが〟
今までPHPをぱかりやっていたのですが、ぉ仕事でn。deー」sをやることになったので勉強がてら作ってみました〝u
PHPのLayav劇且にル一テイングが出来るモジユ一ルです!!ぁくまで「風」です凵!(足りない機能もた〈さんぁりますn〝)
幀mVeトhke非。uung
今回はぉ仕事で使う事を目的としていたため`以下の環境で動かす事が前提になってます〝
ちなみに、n。deのフレ一ムヮ一クはk。aを使用しています〟
※他にも色々使用していますが`今回は創愛します〟
```

日本語だからなのか精度はそこそこですね。


### おまけその１
画像を大きくしたら、精度はあがるのか？ときになったので実験。

[easyimage](https://github.com/hacksparrow/node-easyimage)
画像のリサイズはライブラリを使ってnodeで行います。

ソースは[こちら](https://github.com/yamayamasan/tesseractjs-sample)で公開してます。



#### オリジナルのサイズ

```text
最近n。dejs始めたの者です〝とは言つてもプログラマ歴もまだ浅いのですが〝
今までPHPをばかりやっていたのですがぉ仕亭でn。dejsをやることになつたので勉強がてら作ってみました〝" PHPの』m〉劇風にル一テイングが出来るモジユ一ルです!!ぁくまで「風」です=!(足りない機能もた<さんぁります"〝) ー轟「轟V巳ー一hk巳一「0=い=g 今回はぉ仕亭で使う亭を目的としていたため以下の轟境で動かす亭が前提になつてます〝
ちなみにn。deのフレ一ムワ一クはk。aを使用しています〝 ※他にも色々使用していますが今回は創愛します〝
```

#### widthを1280に拡大

```text
轟近n。der始めたの者です〝とは筐ってもプロクラマ歴もまだ浅いのですが〝
今までPHPをばかりゃっていたのですが、ぉ仕事でn。de〟jsをゃることになったので勉強がてら作ってみました】=
PHPの也mvd風にル一ティンクが出来るモジュ一ルです!!ぁ<まで「風」です!!!(足りない欟能もたくさんぁります"〟)
ーa「aVe卜=keイ0uting
今回はぉ仕事で使う事を目的としていたため、以下の環競で動かす事が前提になってます"
ちなみに、n。deのフレ一ムワ一クはk。aを使用しています〟
※他にも色々使用していますが、今回は創憂します〟
```

#### widthを2000に拡大

```text
巖近n。dejs始めたの者です。とは曹ってもプログラマ歴もまだ浅いのですが〝
今までPHPをばかりゃつていたのですが、ぉ仕事でn。derをゃることになったので勉強がてら作ってみました。〝。
PHPの堕raveー風にル一テイングが出来るモジュ一ルです! !ぁく まで 「風」 です! ! ! (足りない機能もたく さんぁります" 。 。)
ーa「aVe卜=keイ0uting
今回はぉ仕事で使う事を目的としていたため`以下の環攪で動かす事が前提になってます〝
ちなみに、 n。deのフレ一ムワ一クはk。aを使用 していますu
※他にも色々使用していますが、今回は創愛します〝
```

画像が大きくなっても、画質が荒いせいか精度はあまり変わらないようです。。むしろ悪くなってるかも・・・？


### おまけその２

今度はキャプチャを取る際に、文字を拡大/縮小してからキャプチャをとってみる。

#### 縮小

```text
轟近"Mer攣ぬたの者です〟と轍員ってもプログラマ農石馨だまいのてイが.
今馨でPHPをばかリゃっていたのですが`お仕蔓で〝嚇濃典をゃることになったので薫糞がてら作ってみました“
PH剛は燗嶋ーーにル守ィングが出裏るそジJ一ルてイー ー嚢〈 まで 「ー」 です' ' ! (Eりない鷹篭石艇〈 さん姦リ馨す・ (〝】
愴m噌…火eィDmmg
今目傭S仕蔓で讐つ蔓を目鮒としてい艇艇蝋以下のー廣Mかす奮が前塵になってます〝
ちな襄に〟 "Meのフレ一ムワ一ク傭k鮠を讐薦 しています(
※檜にB色~使臓してい馨すが〟 今回轍劇翼します」
```

#### 通常
```text
最近n。der姶めたの者です〝とは言ってもプログラマ歴もまだ浅いのですが〟
今までPHPをぱかりやっていたのですが、ぉ仕事でn。deー」sをやることになったので勉強がてら作ってみました〝u
PHPのLayav劇且にル一テイングが出来るモジユ一ルです!!ぁくまで「風」です凵!(足りない機能もた〈さんぁりますn〝)
幀mVeトhke非。uung
今回はぉ仕事で使う事を目的としていたため`以下の環境で動かす事が前提になってます〝
ちなみに、n。deのフレ一ムヮ一クはk。aを使用しています〟
※他にも色々使用していますが`今回は創愛します〟
```

#### 拡大

```text
最近n。der始めたの者です〟とは言ってもプログラマ歴もまだ浅いのですが〝
今までPHPをばかりやっていたのですが、お仕事でn。deJsをやることになったので勉強がてら作ってみまし
フこg G G
PHPのLaraveー風に丿レ一テイングが出来るモジュ一ルです!!ぁくまで「風」です=!(足りない機能もたくさんぁ
ります〝〝〝)
ーaraVe卜erザ。u廿〔g
今回はお仕事で使う事を目的としていたため、以下の環境で動かす事が前提になってます〝
ちなみに、n。deのフレ一ムワ一クはk。aを使用しています〟
※他にも色々使用していますが`今回は割愛します〝
```

#### さらに拡大！

```text
最近n。der始めたの者です。とは言ってもプログラマ歴もまだ浅いのですが〟
今までPHPをばかりやっていたのですが`お仕事でn。de.jsをやることになったの
で勉強がてら作つてみました。。。
PHPのLaraveー風にル一テイングが出来るモジュ一ルです!!あくまで「風」で
す!!!(足りない機能もたくさんあります。〟)
ーa「aVe卜=keイ。u廿ng
今回はお仕事で使う事を目的としていたため、以下の環境で動かす事が前提に
なってます繍
ちなみに、n。deのフレ一ムワ一クはk。aを使用しています。
※他にも色々使用していますが、今回は割愛します〝
```

今回は拡大する毎に精度がよくなりました。
やはり、文字の大きさや画質などにより精度は変わってくるみたいですね。