iOSデバイスの充電の観察を簡単にしたい

iOS デバイスの充電時の電圧電流状況を観察したいと考えているのですが、できる限り人手をかけたくありません。

そこで何か良い方法はないでしょうか。

現状、私が保有する機器は、

A. 100V のコンセントに接続するワットチェッカー(電圧電流が表示可能)

B. USB A 端子に接続するタイプのチェッカー

C. USB Type-C に接続するタイプのチェッカー

です。

iOS デバイスはiPhone, iPad Pro, など何種類かあります。


3 種類のチェッカーがありますが今、考えつくのは充電時に各チェッカー(同時に3 台使うわけではありません。)をiPhone などで動画撮影して、その動画をFinal Cut Pro X などで10fps などに変換、返還後、シーケンシャルファイルで書き出し、そのファイルから特定の間隔でファイルを抜き出す。

その後、そのファイルをグレー画像に加工してチェッカーの文字を、OCR でテキストとして読み込む。

というような手順を思いつきます。

ところが実際に試すとOCR で処理や、シーケンシャルファイルから等間隔でファイルを抜き出すなどの操作で、つまずきます。ファイルの抜き出しは恐らくスクリプトを組むと、できる人には極めて容易にできると思いますが、どうにもスクリプト系が苦手な私だけでは手が出ません。

また大量の画像ファイルから文字を抜き出すOCR もどのアプリケーションが、予算も含め最適なのか判断が付きません。


ということで、もっと良い方法などはないでしょうか。


なお、データロガー系の機器があれば苦労もないかと思ったのですが、機器が存在するのか?と、更に問題なのが上司に持ちかけたのですが、社から予算は取れないとの事で現有保有機器でなんとかできないものかと思っております。

投稿日 2019/06/14 06:59

返信
返信: 59

2019/08/10 05:43 ni_ki への返信

Linux のUbuntu ですが手強いです^^

git clone https://github.com/tesseract-ocr/tesseract.git tesseract-ocr

でtesseract がダウンロードされるらしいのですが、検証を続けているうちにに5.x 系でしょうかアルファ版が出たようです。

以前の、4.x 系をインストールしたいのですが方法がわかりません。

どうやって前のバージョンをダウンロードするのでしょうか。

2019/08/14 09:49 ni_ki への返信

容量から考えてチェックポイントの出力はできているようなのでmacOS で最後に変換を試そうと思いmacOS にトレーニング用の諸々をインストールしたのですが、エラー出まくりでlstmtraining が動くまで8 時間ほどかかりました。

エラーの原因はHomebrew とMacPorts の差だったようです。MacPorts でトレーニング用のインストールは成功しました。

本家でしょうかGitHub とやらを参照しましたが、Homebrew の方はエラーが出ます。

またgcc とか言うのが8 から9 に変わっていて、最初気付かずと言う体たらくでした。


試したのは仮想環境のmacOS High Sierra ですが、Sierra くらいまで戻した方が良いかもです。

2019/08/22 07:31 ni_ki への返信

今一度、Linux を仮想環境でクリーンインストール状態から、Tesseract の本家を参考に一つづつ試すことにいたしました、

学習用のデータもネットにある方法だと読めないというエラーを大量に食らうので、こちらも自前で用意を考えないとダメなようです。

OCR-D の方もUnicharset の作成でFailed とログに記録されていたので、そこら辺で躓いているのかもです。


考えてみれば世界で動いているはずですから、私のところで動かないのはやり方を間違えているからだと予想しております。

それにしても所謂フルスクラッチの情報は極めて少ない気がします。同じような事を考える人はごまんと居ると思うのですが。

2019/09/02 06:05 ni_ki への返信

0.19 歩くらい前進したかもです。今までOCR-D の、

lstmtraining \

--traineddata $(PROTO_MODEL) \

--net_spec "[1,36,0,1 Ct3,3,16 Mp3,3 Lfys48 Lfx96 Lrx96 Lfx256 O1c`head -n1 data/unicharset`]" \

--model_output data/checkpoints/$(MODEL_NAME) \

--learning_rate 20e-4 \

--train_listfile data/list.train \

--eval_listfile data/list.eval \

--max_iterations $(MAX_ITERATIONS)

で、学習していたようですが大本の情報を確認したら、これはとてつもない時間とサンプルを用意しないとダメとの話なので下記でいけるようにいたしました。

lstmtraining \

--traineddata $(PROTO_MODEL) \

--old_traineddata $(TESSDATA)/$(START_MODEL).traineddata \

--continue_from data/$(START_MODEL)/$(START_MODEL).lstm \

--net_spec "[1,36,0,1 Ct3,3,16 Mp3,3 Lfys48 Lfx96 Lrx96 Lfx256 O1c`head -n1 data/unicharset`]" \

--model_output data/checkpoints/$(MODEL_NAME) \

--learning_rate 20e-4 \

--train_listfile data/list.train \

--eval_listfile data/list.eval \

--max_iterations $(MAX_ITERATIONS)

事前に、 --continue_from data で使用するデータをcombine_tessdata でtraineddata ファイルを変換しておく必要があるようです。


ただし現状、これで得られたtraineddata ファイルは正常に動きません。ログにはエラーもFaild も無くなっているので、この先、なかなか道が厳しそうです。

なお、念のため書いておきますがフォントからの学習なら、成果は既に出ております。

2019/09/03 04:33 ni_ki への返信

OCR-D のMake ファイルが本日、アップデートしたようです。GitHub を偶然訪ねたら8 minutes ago と表示されていてびっくりです。

いくら私が英語はサッパリでもこれは何となくわかります。「何分か前」と言う意味ですね。

ちなみにpy 拡張子の方も何日(19 日)か前にアップデートしていたようです。更にそのPython スクリプトに「Use Python3」と書かれていました。以前からそうだったのか、試すときにPython2.x 系を使っていた気がします。そりゃ動かないわな。

2019/09/03 07:16 ni_ki への返信

ni_ki による書き込み:

lstmtraining \
--traineddata $(PROTO_MODEL) \
--old_traineddata $(TESSDATA)/$(START_MODEL).traineddata \
--continue_from data/$(START_MODEL)/$(START_MODEL).lstm \
--net_spec "[1,36,0,1 Ct3,3,16 Mp3,3 Lfys48 Lfx96 Lrx96 Lfx256 O1c`head -n1 data/unicharset`]" \
--model_output data/checkpoints/$(MODEL_NAME) \
--learning_rate 20e-4 \
--train_listfile data/list.train \
--eval_listfile data/list.eval \
--max_iterations $(MAX_ITERATIONS)
事前に、 --continue_from data で使用するデータをcombine_tessdata でtraineddata ファイルを変換しておく必要があるようです。

ただし現状、これで得られたtraineddata ファイルは正常に動きません。ログにはエラーもFaild も無くなっているので、この先、なかなか道が厳しそうです。

本日再度、試したところ「とりあえず」使えるtraineddata が作成できました。

いわゆる、フルスクラッチで作成した物と同じエラーが出るのですが、これまた「とりあえず」つかえる物であることがわかりました。

ようやく、大本の観測データを示すことに1.5 歩くらい近づいたようです。


それにしても英語でもかなり情報が少ない気がします。(ただし英語がノーマルで読めればそうでも無いのかもしれませんが。)

案外ここと同じで、Q&A で的を外しているものも多い気がしました。

2019/09/17 08:24 ni_ki への返信

検証作業を続けておりますが、どうにも再現しません。

今のところ突然変異で生まれたトレーニングデータのようです。約一万枚の静止画から正確に読めたのですが。再現できないとできた事が立証できません。

それにしても非常に面白いテーマです。たった10 種類しかない文字の読み込みにこれほど苦労するとは。何故読めないのか専門の人の講演でも聞いてみたいところです。


それはさておき今までOCR-D と言うのを使っていると思っていましたが、どうもOCRD-Train と言う名前のようです。GitHub とか言うところでそう言う名前でした。OCR-D というのは別に見つかりますが、関連は私には不明です。

2019/09/23 05:01 ni_ki への返信

書き忘れました。

https://qiita.com/aki_abekawa/items/418e069038fbdb77c59e

のcreate_code_list.py を使う場合、23 行目のファイルパスは自分の所に合わせて書き換える必要があります。例えば私の所だと、

'/home/apple/tess/langdata/jpn/forbidden_characters'

とかです。また使う場合は、

run_command python3 /home/ubuntu/normalize_text.py ${TRAINING_DIR}

もです。例、

「run_command python3 /home/apple/tess/normalize_text.py ${TRAINING_DIR}」

2019/09/23 08:32 ni_ki への返信

フォントを探す人のためにアイデアだけですが、書き込んでおきます。

[0-9] ですから、自分でフォントを作ってしまう手も。Mac では見つかりませんでしたが、フォントを自作するアプリケーションは存在するようです。

なおノイズの乗せ方が実画像とLSTM から酷似させられる方でない限りは、フォントがどんなに似ていても、実画像の学習は必須と思われます。

人間が目を凝らしても空白としか思えないところに「777」とか見つけてくれるので。

もしかして霊界でも見てるのではと思ってしまいます。実画像で学習すると、見つけなくなりますが。

2019/09/29 08:26 ni_ki への返信

Excel などで下記のようなテキストを作成してください。乱数発生で11100 行ほどのデータを私は作成しました。

[7 88 8 31]

[] は不要です。

それをテキストファイル(標準テキスト)として保存。


そのファイルを元に画像データを作成します。

Word 系のファイルで開き「改行」を「改ページ」に置換し11100 ページにしてください。

それをmacOS の印刷機能でPDF に保存。

続いて、Automator でPDF を各ページに分解。

更にAutomator でPDF をtif に変換。そのさい300dpi のグレー画像にします。

画像ファイルの拡張子は[tif] の必要があるので、Automator でリネームして下さい。

これで画像データの作成は終了です。


続いてテキストデータを作成します。最初に作成したテキストファイルを行毎に単独のテキストファイルにするだけです。

私は下記のシェルスクリプトで行いました。

#!/bin/bash


count=0


cat /Users/Shared/OCR/OCRtext.txt | while read ra


do


    count=`expr $count + 1`

    echo "$ra" > /Users/Shared/OCR/OCRtext/"$count"'.txt'


done


ocrd-train はテキストファイルの拡張子はgt.txt の必要があるようなので、Automator で変更します。

2019/09/29 08:56 ni_ki への返信

書き忘れがありました。

画像データですが、当然のごとく一行テキストの画像になるように加工が必要です。綺麗すぎるので汚す必要もあります。

私はCompressor で動画にしてFinal Cut Pro X でぼかしとノイズを乗せました。イメージファイルに戻すのはQuickTime Player 7 Pro を使いましたが、Final Cut Pro X でもできる事がわかりました。

なおPDF をtiff に変換ですが、Aperture は白背景を黒に反転するバグがあり使えず、写真.app はtiff の解像度が荒く使えません。プレビュー.app も数枚ならなんとかなりますが、11100 枚だとお手上げです。


とりあえず読めるようになったのですが、今は観測動画にFinal Cut Pro X でマスクをかけて「.」「V」「m」「A」を消しています。これくらいの文字数なら画像学習でなんとかなるかもしれないので、挑んでみようかと思います。マスクかけが楽になると思うので。フォント学習だと学習用のテキストの作成が面倒かもです。「mA」はありますが、「Am」はないので今回は学習不要な組み合わせです。

macOS で学習と言う大本も残っていますが。


それと参考にさせていただいたリンク先は、学習方法がスクラッチですが、私のところではまともなデータが作成されなかったので、スタートモデルのレイヤーを交換だったかする方に変えています。異質な文字を学習するのではないので、別の学習方法が最適な気がしますが、cord-train がそのような作りでしたので、そうしました。make ファイルを書き換えれば、できるようになるらしいですし。直接、コマンドを実行する手もあります。ログに各種パラメータが残るので楽です。

なおスクラッチだと40 万イタレーションとか必要との情報を本家で見た覚えがあります。画像データも桁が一つは違いそうです。

2019/10/08 02:09 ni_ki への返信

Unicharset の件が片付きました。

cord-train を使って学習できなくなっていましたが、Unicharset が原因ではありませんでした。以前にも引っかかった画面共有越しでの文字コードの変換に再度引っかかっておりました。無事にA やV の学習に成功しました。

macOS Catalina も出たようですが、アップデートするmacOS での学習はしばらく無理かもです。それとも仮想でやるか。

2019/10/13 07:37 ni_ki への返信

連書き申し訳ありません。「この災害時に充電の実データでもないだろう」と思っておりましたが、もしかしたら、気が休まるくらいには成るかもしれないので、

今回のOCR の成果を開示しておきます。

あくまでも私の観測ですから、自分でご使用の際はご注意下さい。

上記はiPhone8 Plus iOS12.4.1 の充電時のアダプタから出力される計測からワット数を算出した物です。Apple 製30W アダプタを使っています。

表を見るに1 時間くらいまでは5W アダプタでは遅くなります。30 分間2 割程度ですが。

2019/11/01 06:03 ni_ki への返信

再度、チェッカーの表示変更タイミングを観察してみました。

このチェッカーは電圧、電流、電力量、電力、経過時間が表示されますが、画面の場所によって変更タイミングが違うことに気付きました。その結果、アンペアの表示変更タイミングは239.9704fps で書き換えているようです。

電圧の方は滅多に書き換えられないので、直接はつかめていませんが時間表示が秒単位で表示されており、そちらが16 から17 フレーム差で書き換えられているので、恐らく同じタイミングだと予想しております。

この結果に基づき再度、観測画像を解析してみたいと思います。

2019/11/27 05:17 ni_ki への返信

やっとmacOS High Sierra 10.13.6 で学習環境が動きました。

参考にしたのは下記ですが、記載通りだと今は動きません。

https://github.com/tesseract-ocr/tesseract/issues/1453

まだ解析が終わっていないので何故、動くようになったのかは不明です。

どうもcairo とかpango なども入れた方が良いようです。

またリンク先で掲示されているファイルパスは、バージョンによって変わるので自分で見つけ出してファイルパスを変える必要があるようです。具体的な例としては、シェルスクリプト本体のパスが変わっていました。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

iOSデバイスの充電の観察を簡単にしたい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。