俺のOneNote

俺のOneNote

データ分析が仕事な人のOneNote愛とか、分析小話とか。

【第2回】Python Marketing Data Analytics! ~データ確認の第一歩、可視化~

さて、前回に引き続き、銀行のキャンペーンマーケティングデータに基づく分析をネタにした勉強記録ですー。

データの可視化

まずは、データのheadを確認。

df.head()
age job marital education default balance housing loan contact day month duration campaign pdays previous poutcome y
0 30 unemployed married primary no 1787 no no cellular 19 oct 79 1 -1 0 unknown no
1 33 services married secondary no 4789 yes yes cellular 11 may 220 1 339 4 failure no
2 35 management single tertiary no 1350 yes no cellular 16 apr 185 1 330 1 failure no
3 30 management married tertiary no 1476 yes yes unknown 3 jun 199 4 -1 0 unknown no
4 59 blue-collar married secondary no 0 yes no unknown 5 may 226 1 -1 0 unknown no

実際にデータの内容を把握するため、グラフとして可視化してみることからスタートする。

まずは、分析したい対象に着目することがデータ分析の第一歩となる。
今回は、「y(定期預金の契約有無)」が対象だ。
このデータがどのような特性があるのか、このデータに影響を与えている変数はあるのか、 などを仮説を立てながら可視化し、検証していく。

sns.countplot(x='y', data=df)

f:id:kopaprin:20180421233933p:plain

データの大部分はnoの結果であることが分かる。
具体的な数値は集計時に確認してみる。

yesnoの結果の違いは何からもたらされるのだろうか?

例えば、前回キャンペーンの効果結果は、今回のキャンペーンの結果による定期預金申込有無に効果を示しそうである。

sns.countplot(x='poutcome', hue='y', data=df)

f:id:kopaprin:20180421234005p:plain

データをみると、確かに前回結果がsuccessの群は、目的変数がyesとなっている人が多いことが分かる。
ただ、カテゴリごとのデータのサイズが大きく異なるため、単純なcountplotだけだと見にくいようだ。

これは、集計により比率等を算出してクロス集計を行ったり、
目的変数をダミー変数化して、数値データとして扱うことで、傾向を分かりやすく表現するなどの工夫が必要そうである。


カテゴリーデータ毎の可視化は、何らかの集計や加工をして可視化したほうが良さそうだ。
特に目的変数(今回でいえばy)が2値データの場合、ロジット関数をリンク関数としたモデル、
いわゆるロジスティック回帰モデルでモデリングしてみることが発生すると思われるので、ダミー変数化はほぼ必須である。
ダミー変数化とそれに伴う可視化・モデリング等はまた別の回で取り組んでみたい。


次に、数値データとカテゴリーデータの可視化はどうだろう?
まず気になるのは、ageyの関係である。
age(年齢)は様々なデータ分析の説明変数になりやすい重要な要素である。


ageの分布をヒストグラムで可視化してみる。

plt.figure(figsize=(5,5))
plt.hist(df.age, bins=30)
plt.show()

f:id:kopaprin:20180421234031p:plain

30歳代~40歳代が最もデータ数が多いようである。
60歳代以降になると人数は急激に減少する。

では次に、ageyとの関係を確認しよう。

yの結果ごとにみた場合、ageの分布の傾向に特性がみられるかが焦点になる。

以下のとおりグラフを重ねて表示してみる。

age_y = df[df['y'] == 'yes']['age']
age_n = df[df['y'] == 'no']['age']

plt.figure(figsize=(5,5))
plt.hist(age_y, bins=30, alpha=0.5, color='cornflowerblue', label='$y=yes$')
plt.hist(age_n, bins=30, alpha=0.5, color='mediumseagreen', label='$y=no$')
plt.legend()
plt.show()

f:id:kopaprin:20180421234053p:plain

y = no のサイズが大きいため、ヒストグラム自体を重ねると、分布の違いは比較できないようだ。 そこで、グラフを2つに分けて比較してみる。

fig, gr = plt.subplots(1,2,figsize=(12,5))

gr[0].hist(age_y, bins=30, color='cornflowerblue')
gr[0].set_title('$y=yes$')
gr[0].set_xlabel=('age')

gr[1].hist(age_n, bins=30, color='mediumseagreen')
gr[1].set_title('$y=no$')
gr[1].set_xlabel=('age')

plt.show()

f:id:kopaprin:20180421234112p:plain

y = yes の群のほうが、やや高齢層の比率が高いように思える。
年齢が高いほど yes の可能性が高くなるかどうかは、今後の検討材料になりそうだ。

データの分布は、もう少し分かりやすく描写する方法もある。

plt.figure(figsize=(8,5))
sns.distplot(df['age'], bins=30, color='cornflowerblue')
plt.show()

f:id:kopaprin:20180421234133p:plain

上記のグラフは、カーネル密度推定を行ったグラフである。
データから推定した確率密度関数を描写しており、データの背後にあると想定される確率分布が可視化できる。

カーネル密度推定については、以下wikiを参照するとよい。
カーネル密度推定

これを使えば、異なるカテゴリの分布の違いが比較的分かりやすく描写できる。

fig = sns.FacetGrid(df, hue='y', aspect=4)
fig.map(sns.kdeplot, 'age', shade=True)
fig.add_legend()
plt.show()

f:id:kopaprin:20180421234156p:plain

上記のとおり、yes、noの群では、若年層と高齢層で差がみられる。
yesの群のほうが分散が大きいようである。

各変数間のデータの状況を知りたいときは、sns.pairplotを利用すると便利だ。
データフレームの数値データだけになるが、それぞれの散布図行列図を出力できる。 回帰直線も描写されるため、相関関係も(なんとなく)把握できる。

sns.pairplot(df, hue="y", size=2,  kind='reg', diag_kind='kde')
plt.show()

f:id:kopaprin:20180421234223p:plain

グラフだけみると、balanceageの関係について、y = yesの群では正の相関がありそうな描写となっている。
これを確かめるため、この変数だけにしぼって描写してみる。

sns.jointplot('balance','age', df[df['y']=='yes'], kind="reg")
plt.show()

f:id:kopaprin:20180421234257p:plain

このデータをみると、agebalanceの間に相関関係はほとんどみられないことが分かる。
単に見た目の問題ではなく、きちんと数値で確認することが重要なようだ。

データセットを構成する変数同士の相関(連関)が、後々回帰分析を行う際のマルチコ(多重共線性)の有無を把握する際に重要になることがある。

変数同士の相関については、相関行列図を描写することが最も相関関係が分かりやすいため、どこかで実施していくことが必須になる。

なお、相関=因果ではないことは特に気を付けて分析してくべきだ。 疑似相関の問題も常に念頭に入れておくと良いと思う。

次に、前回に少し着目したbalanceの分布についてもう少し詳細に確認してみることにする。 まずはKDEプロットを行う。

fig = sns.FacetGrid(df, hue='y', aspect=5)
fig.map(sns.kdeplot, 'balance', shade=True)
fig.add_legend()
plt.show()

f:id:kopaprin:20180421234350p:plain

記述統計の際に推察したとおり、右裾がとても長い分布になっているようである。

分布の形状に関しては、ヴァイオリンプロットと呼ばれるグラフも分かりやすい。

sns.factorplot(x='y', y='balance', data=df, kind='violin',aspect=2)
plt.show()

f:id:kopaprin:20180421234411p:plain

balanceは裾が長い分布であるのでかなり分かりづらいかもしれないが、 ageを例にもう一度描写してみると、分布についてよく分かる。

sns.factorplot(x='y', y='age', data=df, kind='violin',aspect=2)
plt.show()

f:id:kopaprin:20180421234430p:plain

バイオリンプロットは、3変数の分布も大変分かりやすく描写してくれる。
以下は、「婚姻状況(marital)」、「年齢(age)」、「定期預金契約(y)」の分布。

ax = sns.violinplot(x="marital", y="age", hue="y",aspect=.5,
                    data=df, split=True)
plt.show()

f:id:kopaprin:20180421234449p:plain

単身者は低年齢、婚姻・離婚者は中央値はやはり高く、分散も大きい。
また、高齢の定期預金契約者が多いのはmarrieddivorcedが顕著である。

今後の解析において、データが正規分布に基づいているか確認することが必要になるケースがある。
balanceageの正規性を確認してみたい。

plt.figure(figsize=(5,5))
gr = stats.probplot(df['age'], plot=plt)
plt.title('age')
plt.show()

f:id:kopaprin:20180421234503p:plain

plt.figure(figsize=(5,5))
gr = stats.probplot(df['balance'], plot=plt)
plt.title('balance')
plt.show()

f:id:kopaprin:20180421234519p:plain

上記グラフはQ-Qプロットと呼ばれる。
観測値がある確率分布に従う場合の期待値と観測値のデータを2次元に表示したものだ。 今回は正規分布を理論分布と仮定しているため、正規Q-Qプロットなどと呼ばれる。

データの青いプロットが、赤いラインに沿えばこのデータが正規分布に従っていると判断できる。 しかし、age,balanceのいずれも両側が上向きに歪んでおり、正規分布以上に裾が広がっていると考えられる。

正規性を仮定した分析は好ましくないようだ。

直観的な解釈ではなく、客観的に検定を行う手法もある。
Shapiro-Wilk検定やKolmogorov-Smirnov検定がそれにあたる。
ただし、昨今はビッグデータとよばれる大量データを分析することが多いようであるため、検定を行うシチュエーションは減っているようである。 (サンプルサイズが大きいほど、p値が小さくなるため)

stats.shapiro(df['age'])
(0.9595122933387756, 9.410944406190885e-34)
stats.shapiro(df['balance'])
(0.5015109777450562, 0.0)

いずれもp値は0.05を下回るため、帰無仮説(データは正規分布に従う)は棄却される。
つまり、両データとも正規性を有しないデータであることが分かる。

ただし、本データはサイズが大きく、P値が優位になりやすいため、検定は適切ではなさそうではあるが、
ひとつのテクニックとして覚えておくと良さそうだ。

終わりに

ここまで書いた後でしたが、欠損値補完を完全に飛ばしてたー。
まぁ、どこかの段階でやりましょう。
Pythonだと限界があるので、Rを呼び出してみる必要性があるかも。


とりあえず、このまま進めちゃえってことで、次はクロス集計と検定をやりまーす。

上半期最大の衝撃。OneNote、Win10付属版が主軸に?!

最近、世間をこのようなニュースが騒がせています。

japanese.engadget.com

…え?知らない?そんなご冗談をw

つまり、OfficeファミリーのOneNoteは2016で終了。 今後はWindows10付属版が主軸になるようです。

「何を言っているんだお前は・・・?」

という方。 ぜひ以下を確認いただきたい。

貴方がWin10ユーザーで、office365が入っていれば、 以下2つのOneNoteがPCにインストールされているはずです。

f:id:kopaprin:20180422000514j:plain

上がWin10付属OneNote。 下がOffice OneNote2016。

それぞれUIも大きく異なる。

Win10付属OneNote f:id:kopaprin:20180422000703j:plain

Office OneNote2016 f:id:kopaprin:20180422000736j:plain

皆さまはどっち派だろうか?僕は残念ながらOffice派。

動揺を隠しえません。 願わくば、UIをDesktop版並みにしてほしいものです・・・。

【第1回】Python Marketing Data Analytics! ~古典的マーケティングデータ分析にも目を向けて~

f:id:kopaprin:20180419195625p:plain

このカテゴリは本業、データ分析系のお話やTipsです。
Qiitaに書くレベルではない自分の覚書や練習記録、情報提供として残していこうかと。

qiita.com

1年後に「まだ自分はこの程度だったのか~wクソダサいww」というのが目標です。

つーかブログ趣旨とギャップありすぎて、別ブログ立ち上げるべきかと思いましたが、
まあゆるくやっていけばいいや、というめんどくさい精神全開の結果です。ご容赦ください。

モチベーション

なんでこんなタイトルにしたかというと、
機械学習ディープラーニングが全盛の中、もうちょっとPythonでの古典的な統計解析、データ分析手法中心のネタがあってもいいんじゃね?
と思ったから。
というか、僕自身が勉強しないと、基礎が全くダメだなぁと思ったからです。

まぁ、Python自体が統計解析ライブラリがRほど充実していないので、当然といれば当然ですが・・・。

ビッグデータと呼ばれる大量データの分析が中心の今、データ分析は推測統計や検定はだいぶ意気消沈していそうな気がします。
機械学習系の情報がWebに溢れかえっているせいかもしれませんが・・・)

でも世間にはきっと、
データは少ないけど、そこから得られるものを導き出したい。
予測ではなくて、目的変数に与える影響要因の分析がしたい。
とか、そういうニーズも多いはず。
いわゆるAIでの予測ではなく、BI(ビジネスインテリジェンス)の視点でデータからインサイトを得よう!という趣旨のデータ分析ですね。

ということで、勉強がてら、「マーケティング」をネタにしたPythonデータ分析記事を色々書いていこうと思います。
もちろん、機械学習の技術なども入ってくると思いますが。

なお、内容には誤りなどがある可能性がありますので、ご容赦ください。
ぼくの勉強不足&不手際です。精進します。
お気づきの際はご指摘いただけると喜びます。

実行環境について

以下の記事を参照ください。
Kaggleのデータは使わないと思いますが、Colaboratory(Python3)を使ってます。

qiita.com

利用データについて

しばらくは、UCI Machine Learning RepositoryBank Marketing Data Set を利用していきます。
利用するデータはbank.csvです。

では、以下からスタート!長く続くといいなぁw

必要ライブラリのインポート

import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

データの読み込み

pd.set_option("display.max_columns", 50)
df = pd.read_table('bank.csv', sep=';')
df.head()
age job marital education default balance housing loan contact day month duration campaign pdays previous poutcome y
0 30 unemployed married primary no 1787 no no cellular 19 oct 79 1 -1 0 unknown no
1 33 services married secondary no 4789 yes yes cellular 11 may 220 1 339 4 failure no
2 35 management single tertiary no 1350 yes no cellular 16 apr 185 1 330 1 failure no
3 30 management married tertiary no 1476 yes yes unknown 3 jun 199 4 -1 0 unknown no
4 59 blue-collar married secondary no 0 yes no unknown 5 may 226 1 -1 0 unknown no

データの概要を把握する

データ分析の第1歩は、そのデータの概要を掌握することからスタートしよう。
とくに、データに対するドメイン知識が無い場合、単なる記述統計からでもデータの背景にある事象の概況は推察できる。

df.shape
(4521, 17)

このデータは、4,521レコード、17カラムで構成されていることが分かる。
つまり、4,521人分のデータであり、1人あたり17の変数となるデータを持っていることになる。

df.columns
Index(['age', 'job', 'marital', 'education', 'default', 'balance', 'housing',
       'loan', 'contact', 'day', 'month', 'duration', 'campaign', 'pdays',
       'previous', 'poutcome', 'y'],
      dtype='object')

各カラムの名前は上記コードで取得できる。 このデータセットは、ポルトガルの銀行機関のダイレクトマーケティングの実績データのようだ。

このデータセットを持ってきたUCI Machine Learning Repositoryから、データセットの変数の内容を拝借すると、以下のとおりとなっている。

変数名 内容
age 年齢
job 仕事
marital 婚姻有無
education 教育水準
default クレジットカードの債務不履行有無
balance 年間平均残高(€)
housing j住宅ローンの有無
loan 個人ローンの有無
contact 連絡方法
day 最終接触日
month 最終接触月
duration 最終接触時間(秒)
campaign キャンペーン中の連絡数
pdays 最後に連絡した日からの日数
previous キャンペーンまでに接触した回数
poutcome 以前のマーケティングキャンペーンの結果
y 定期預金の契約有無

※ちなみに、このデータを題材にSIGNEATEでオープンコンペが開かれている。


まず、それぞれのカラムとデータ型を確認する。

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4521 entries, 0 to 4520
Data columns (total 17 columns):
age          4521 non-null int64
job          4521 non-null object
marital      4521 non-null object
education    4521 non-null object
default      4521 non-null object
balance      4521 non-null int64
housing      4521 non-null object
loan         4521 non-null object
contact      4521 non-null object
day          4521 non-null int64
month        4521 non-null object
duration     4521 non-null int64
campaign     4521 non-null int64
pdays        4521 non-null int64
previous     4521 non-null int64
poutcome     4521 non-null object
y            4521 non-null object
dtypes: int64(7), object(10)
memory usage: 600.5+ KB

int64の数値型が7カラム、objectが10カラムあることが分かる。 次に、各カラムの基本統計量を確認する。

df.describe()
age balance day duration campaign pdays previous
count 4521.000000 4521.000000 4521.000000 4521.000000 4521.000000 4521.000000 4521.000000
mean 41.170095 1422.657819 15.915284 263.961292 2.793630 39.766645 0.542579
std 10.576211 3009.638142 8.247667 259.856633 3.109807 100.121124 1.693562
min 19.000000 -3313.000000 1.000000 4.000000 1.000000 -1.000000 0.000000
25% 33.000000 69.000000 9.000000 104.000000 1.000000 -1.000000 0.000000
50% 39.000000 444.000000 16.000000 185.000000 2.000000 -1.000000 0.000000
75% 49.000000 1480.000000 21.000000 329.000000 3.000000 -1.000000 0.000000
max 87.000000 71188.000000 31.000000 3025.000000 50.000000 871.000000 25.000000

まずは数値型のデータ確認。それぞれの用語は以下のとおりである。

項目 意味
count データ数
mean 算術平均
std 標準偏差
min 最小値
25% 25パーセンタイル
50% 50パーセンタイル(中央値)
75% 75パーセンタイル
max 最大値

オブジェクトのカラムの概要も以下で算出できる。

df.describe(include='O') # 大文字の「O(オー)」(Object)をincludeで指定すればオブジェクトのカラムを取得できる。
job marital education default housing loan contact month poutcome y
count 4521 4521 4521 4521 4521 4521 4521 4521 4521 4521
unique 12 3 4 2 2 2 3 12 4 2
top management married secondary no yes no cellular may unknown no
freq 969 2797 2306 4445 2559 3830 2896 1398 3705 4000

それぞれ用語は以下のとおり。

項目 意味
count データ数
unique 変数の種類数
top 最頻値
freq 最頻値の頻度

pandas.DataFrame.describeだけでもいろいろなことが分かりそうだ。
例えばbalanceに着目してみると、平均値と中央値(50%値)の値が大きく乖離しており、 平均値 > 中央値 となっている。
これは例えば年収分布と同じ減少で、少数の値が大きいデータやはずれ値に平均値が引き上げられている可能性を示す。
つまり、右に裾が長い分布となっていることが推察できる。

なお、pandas.DataFrame.describeでは数値、オブジェクトすべて一括して表示することも可能である。

df.describe(include='all')
age job marital education default balance housing loan contact day month duration campaign pdays previous poutcome y
count 4521.000000 4521 4521 4521 4521 4521.000000 4521 4521 4521 4521.000000 4521 4521.000000 4521.000000 4521.000000 4521.000000 4521 4521
unique NaN 12 3 4 2 NaN 2 2 3 NaN 12 NaN NaN NaN NaN 4 2
top NaN management married secondary no NaN yes no cellular NaN may NaN NaN NaN NaN unknown no
freq NaN 969 2797 2306 4445 NaN 2559 3830 2896 NaN 1398 NaN NaN NaN NaN 3705 4000
mean 41.170095 NaN NaN NaN NaN 1422.657819 NaN NaN NaN 15.915284 NaN 263.961292 2.793630 39.766645 0.542579 NaN NaN
std 10.576211 NaN NaN NaN NaN 3009.638142 NaN NaN NaN 8.247667 NaN 259.856633 3.109807 100.121124 1.693562 NaN NaN
min 19.000000 NaN NaN NaN NaN -3313.000000 NaN NaN NaN 1.000000 NaN 4.000000 1.000000 -1.000000 0.000000 NaN NaN
25% 33.000000 NaN NaN NaN NaN 69.000000 NaN NaN NaN 9.000000 NaN 104.000000 1.000000 -1.000000 0.000000 NaN NaN
50% 39.000000 NaN NaN NaN NaN 444.000000 NaN NaN NaN 16.000000 NaN 185.000000 2.000000 -1.000000 0.000000 NaN NaN
75% 49.000000 NaN NaN NaN NaN 1480.000000 NaN NaN NaN 21.000000 NaN 329.000000 3.000000 -1.000000 0.000000 NaN NaN
max 87.000000 NaN NaN NaN NaN 71188.000000 NaN NaN NaN 31.000000 NaN 3025.000000 50.000000 871.000000 25.000000 NaN NaN

このような記述統計からデータの概要を把握していくことが第一歩となる。
つぎに、推察した内容が的確かどうか、データの可視化などを進めて確認していく。

つづく

とりあえず今回はここまで。 次回はmatplotlibやseabornを使ってデータの可視化を行っていきます。

考察

Colaboratory上の.ipynb.mdにしてブログに上げるのがクソめんどくさいことが分かったので、 今後どうするか模索。 普通にjupyterでやるべきなのか・・・。GitHubを使うのも良さそう。

OneNoteにWebサイトをペタペタ貼る WebClip機能

WebClip機能をご存知でしょうか?

言葉のイメージどおり、WEBページをサクッとクリップに止めて記録しておくイメージ。 まあ、単純に言えばブクマと同じです。

さっそくやってみよう!

準備(Chrome

いつも通りブラウザは私愛用のChrome前提。他のブラウザは各自お試しください。
※世間には”ブラウザ”が通じないビジネスマンもいらっしゃるらしい。
 接客メインの仕事なら仕方ないケド、BtoBとかの仕事している方は最低限のIT知識は必要。

Chromeウェブストアから、OneNote拡張機能を取得しましょう。

chrome.google.com

こんな感じで右上に出る。

f:id:kopaprin:20180418184110p:plain

Clipの種類

WebClipにはいくつかの種類があります。

f:id:kopaprin:20180418184226p:plain

試しにこのブログ記事をClipするとどうなるか?

Full Page

いやぁ、あなたこそFullです。Fullといえばこれです。

f:id:kopaprin:20180418184627p:plain

Region

指定領域をClipするよ♪ってこと。

f:id:kopaprin:20180418184927p:plain

Article

男はだまって文字だけっ! (記事内の画像ファイルやハイパーリンクは取得してくる)

f:id:kopaprin:20180418185451p:plain

Bookmark

埋め込みみたいになる。

f:id:kopaprin:20180418185747p:plain

終わりに

個人的に好きなのは、「Article」と「Bookmark」ですかねぇ。 「Article」は文字検索しやすいのがよい。

ちなみにOneNoteの検索性は結構イイです(と思っている)。

OneNoteでLaTeX数式

技術書などで勉強していると、数式をメモっておきたいときがある。

数式の記載は、研究者などの方はLaTeXに慣れ親しんでいる方が多いと思います

OneNoteでは、LaTeXで数式を書くことも可能になっているのです。

Office365のLaTeX数式入力対応

例えば以下のとおり、WordでLaTeX数式への対応が記事となっています。もちろんExcelも同様。

support.office.com

ただ、PowerPointOneNote だけ使い勝手が異なるようです。

OneNoteでのLaTeX数式モードへの変更

以下の公式記事に詳しく書かれています。

Office での LaTeX の数式入力 – Office Blogs

さっそく実践。

f:id:kopaprin:20180414013802g:plain

[挿入]→[数式]→[ツール]→[数式オートコレクト]
「修正文字列」→[\Tex] 「修正後の文字列」→[24C9]→Alt + Xを押して完了

結果

数式入力モードにし、冒頭に'\Tex<スペース>'を入れた後にLaTeX数式を入力する。

ちなみに、以下のように入力すると・・・
MSE= \frac{1}{N}\sum_{n=0}^{N-1}(y_n-t_n)2

こんな感じ。

f:id:kopaprin:20180414013737p:plain

勉強・研究が捗りますねぇ。 ペン&タブレットユーザーなら手書きが一番早いケド。

ファイルをそのままぶち込む

OneNoteはファイルをそのままノート上にぶち込めます。

これがOneNoteにほれ込んだ一つの理由だったりします。

数年前、OneNoteEvernoteに迷いつつ、この機能によりOneNoteを日常使いすることにしました。

今はEvernoteも充実しているのかな?

ファイルの埋め込み

ノート上にファイルをぶち込むとこんな感じになる。

f:id:kopaprin:20180408230617j:plain

もちろん、文字の入力などもOK

f:id:kopaprin:20180408232051j:plain

超便利。

もちろんブラウザ版OneNoteと同期

ブラウザ上でOneNoteを開いてもファイルを確認できます。

f:id:kopaprin:20180408232745j:plain

OneNoteで名刺管理!?

最初の記事がいきなりこれって感じではありますが、 面白い使い方なので紹介してみます~。

OneNote for Andoroid または OneNote for iPhoneを用意

とりあえずスマホ用アプリを入手。

play.google.com

Microsoft OneNote

Microsoft OneNote

スマホアプリを起動して、名刺を撮ってみます。 カメラを起動して写真の取り込みを選択すると、以下のメニューが選べます。

  • 写真
  • ドキュメント
  • 名刺
  • ホワイトボード

一番便利なのはホワイトボードですが、面白いので名刺からいくぞー。

アプリ上での写真取り込み

名刺を撮影するとこんな感じ。 名刺範囲のガイドが表示されます。
f:id:kopaprin:20180405004240j:plain

うまく枠が判定できないケースもあり。
f:id:kopaprin:20180405004427j:plain

そんな時も補正できます。
f:id:kopaprin:20180405004458j:plain

できあがり。
f:id:kopaprin:20180405004521j:plain

OneNote上では

OneNote上ではこんな感じになっています。
f:id:kopaprin:20180405004904j:plain

ちなみに、OneNoteでは「画像上のテキストを検索対象にする」ことや、「画像からテキストをコピー」することができます。 OCRってやつです。

んでやってみると・・・。

f:id:kopaprin:20180405005237j:plain

・・・うん。まあなんだ。がんばっているではないか。 名前とか資格名は完璧だし。

まとめ

以上!OneNoteに名刺を取り込んじゃう手順でした。

ちなみに僕はEightユーザー・・・おっと、だれか来たようだ。

play.google.com