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/10/21 05:43 ni_ki への返信

チェッカーによっては画面の変更に0.3 秒かかるようです。

変更時の画像を確認したところOCR としては、かなりまずい状況になります。人間である私が読んでも実値とまるで違う数値になります。

これをどうにかしたいのですが、どうにも良い手を思いつきません。

まさにAI を活用すべき案件なのですが、そこまでの知識はありません。

何か良い手はないでしょうか。

2019/11/22 04:19 ni_ki への返信

macOS で学習の準備を始めたのですが、やはり躓きました。

text2image が無いとか言われています。

ちなみにmacOS High Sierra で試しています。

安定性と資料の多さから二つ前のOS にしました、macOS Catalina だと「あぁ、かったりーな」になりそうな気がするので。

2019/11/28 05:43 ni_ki への返信

ni_ki による書き込み:

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

本日再現実験を行いました。結果、再現できず。

私は昨日、何をやったのでしょうか。


ちなみに、昨日出来たというのは間違いありません。仮想環境なのでその環境で今日試しても動きます。

ホント、なにやったんだろう????

2019/07/28 04:19 ni_ki への返信

一応できました。数々のホームページにお世話になりました、後ほどURL 等公開させていただきます。


それで本題ですが、不要なスペースやコロン、Excel で読むと四角にバッテンで表示される(多分、)改行文字。更に本来6 桁の数値のはずが7 桁目が出力される事があるのでゴミ取りが必要です。Excel なら何とかなりそうです。1 万枚程度に画像データですのでまだゴミ取りと突き合わせは完了しておりませんが。

今回作成したTesseract の学習データはフォントから(正確にはフォントから作成した画像。)学習なので、次は録画からの切り出しと、テキストデータで学習させたデータの作成に挑もうと思います。

今はeng データに追加で学習させているのですが、0 - 9 の一芸OCR で良いわけですから、一から学習させた方が効率ははるかに良い気がしています。eng データに追加ですからアルファベットも読んでしまいます。ちなみに学習回数と言うのかは4000 回です。増やしたり減らすとどうなるかは不明。

Tesseract 3 で使えたと言うホワイトリストが使えるともっと楽だった気がします。


ところでExcel ってセルの中から数値だけ拾い出す関数ってありましたっけ。

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

ついにPython まで出てきました。名前くらいしか知らないので、厄介です。数十行しかないのと全体の把握が不要なのが救いです。

はじめ何のエラーか分からず万事休すかと思ったのですが、encode(‘UTF-8’) とか言うのをprint 分に付けないとダメなんですね。Python 2.x 系とか言うのを使っているらしいです。

情報が多いのでUbuntu を動かしていますが、Python のスクリプトを見るのはXcode が便利ですね。数十行のスクリプトを閲覧するのにはパカでかいアプリケーションですが。

ちなみに仮想のせいかUbuntu も一つのフォルダに2 万個もファイルを放り込むと、たまに動かなくなります。

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

続いて「b. フォントから学習したtraineddata に更に画像から学習」です。

参考にさせて頂いたホームページに倣いocrd-train を使います。


先ほど作成のtraineddata をocrd-train/usr/share/tessdata/ フォルダにコピー。

用意した学習データを/home/apple/ocrd-train/data/ground-truthにコピー。

参考リンク先はMINIST と言うのを使っていますが、数字のみなので11100 枚のtif 画像を自前で用意しました。またスクラッチはせずに、他の学習法を採用しているのでocrd-train のコマンドが参考リンク先と違います。

下記が準備のコマンドです。一部、まったく無駄な物が含まれています。

sudo apt install -y python python-pip python3-pip imagemagick libsm6 libxext6

pip install pillow

sudo apt install python3-pip

sudo pip3 install pillow opencv-python scipy

mkdir emnist && cd emnist


cd ../

git clone --depth 1 https://github.com/OCR-D/ocrd-train.git

mkdir -p ocrd-train/usr/share/tessdata/


cp '/home/apple/tess/degf.traineddata' ocrd-train/usr/share/tessdata/

先ほど作成のtraineddata をコピー。学習用画像は手動でコピーして下さい。


cp $TESSDATA_PREFIX/eng_best.traineddata ocrd-train/usr/share/tessdata/


cd ocrd-train


nohup time -f "Run time = %E\n" make training MODEL_NAME=degfp START_MODEL=degf MAX_ITERATIONS=40000 >> train.log 2>&1 &


監視は下記。

tail -f train.log


私の所では1 時間前後で完了します。

2019/09/23 06:09 ni_ki への返信

バラバラと書き込んでいるのは、内容によって別の書込にした方がわかりやすいと考えたためです。ご容赦を。

それで今後の方針ですが、いよいよ次はmacOS での学習ができるか挑んでみたいと思います。Ubuntu でできないようではmacOS でなど夢のまた夢でした。

それと、学習用の画像データですが、大半が読めたのでUSB チェッカーの画像を直接、学習データに加工できる気がします。また今は左側が電圧、右側が電流の画像ですが、左右を分けて学習画像を作成すれば倍の画像が確保できます。効果は不明ですが試す価値はありそうです。


なお、最初の学習用の画像の作成方法も、書き込みたいと思います。これがないと読めるようになりません。まぁまぁ試行錯誤しました。

Excel,Word,シェルスクリプト,Final Cut Pro X,Compressor,QuickTime Pro 7,Automator などを使った覚えがあります。以前も書きましたがQuickTime Pro は次期OS から動きません。Compressor も今のままだと一部動かなくなります。

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

まずりました。

cord-train で実画像から学習するに当たりunicharset と言うファイルがいるようなのですが、このファイルの作成方法を失念しました。このスレッドを立ててから、何かの方法で作成したはずなのですが。

今手元には、[0-9] のunicharset のファイルがあるの数値のみの学習はできるのですが、ここに「. m V A」を入れる方法が不明です。

いわゆる、ミッシングリンクになってしましました。

2019/11/30 04:05 ni_ki への返信

再度試したとこ、macOS でトレーニング環境が動きました。

一旦動かなくなったのは、どうやら酔っ払っているうちに、意図しないファイルパスを登録したために、それが原因で動いてしまったようです。

ただし、まともなトレーニングデータを得るには至っておりません。とにかくトレーニング環境が動く事を目指しました。

書込の末のトレーニング方法を見直せば、何とかなると考えられます。


また、ターミナルに入力したコマンドを解説せずに記載しております。ご使用時にはご注意ください。例えばJava のツールのインストール時にGUI 側(Finder とか。)の操作が必要かもしれません。私はssh でリモートで行っていたため、画面に出た警告に気付かず時間を浪費した気がします。


参考にしたサイトは下記。他多数です。

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

下記は一部を参考にしました。

https://stackoverflow.com/questions/55361379/osx-compiling-training-tools-for-tesseract-4-0-pango-libraries-not-found


環境は下記。

macOS High Sierra 10.13.6 VMware Fusion

tesseract 4.1.1-rc1

leptonica-1.78.0

libgif 5.2.1 : libjpeg 9c : libpng 1.6.37 : libtiff 4.1.0 : zlib 1.2.11 : libwebp 1.0.3 : libopenjp2 2.3.1

Found AVX

Found SSE


無駄な物がたくさん含まれています。ご使用になる場合は適宜、自分に合わせて変更してください。

以下、Homebrewのインストールが必要です。


brew install automake autoconf autoconf-archive libtool

brew install pkgconfig

brew install icu4c

brew install leptonica

brew install gcc

brew install cairo pango


xx.xは変えること。

ls -l /usr/local/Cellar/icu4c

ln -hfs /usr/local/Cellar/icu4c/xx.x /usr/local/opt/icu4c


mkdir tesseract

フォルダにTeseract4.1のソースをコピー


cd tesseract


./autogen.sh


export PKG_CONFIG_PATH=\

$(brew --prefix)/lib/pkgconfig:\

$(brew --prefix)/opt/libarchive/lib/pkgconfig:\

$(brew --prefix)/opt/icu4c/lib/pkgconfig:\

$(brew --prefix)/opt/libffi/lib/pkgconfig:\

$(brew --prefix)/opt/libpng/lib/pkgconfig


brew info icu4c


echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile & \

echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile & \

export LDFLAGS="-L/usr/local/opt/icu4c/lib" & \

export CPPFLAGS="-I/usr/local/opt/icu4c/include" & \

export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"


./configure \

CPPFLAGS=-I/usr/local/opt/icu4c/include \

LDFLAGS=-L/usr/local/opt/icu4c/lib


make -j


sudo make install


sudo update_dyld_shared_cache


make training


sudo make training-install


echo "export TESSDATA_PREFIX=/usr/local/share/tessdata/" >> ~/.bash_profile && source ~/.bash_profile


cd java


SCROLLVIEW_PATH=~/tesseract/java


Java のコマンドラインツールとかいうののインストールが必要です。

make ScrollView.jar


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


cd ..


text2image --list_available_fonts --fonts_dir=/Library/Fonts


下記の() 内の操作は不要。(

- export FONT_CONFIG_CACHE=$(mktemp -d --tmpdir font_tmp.XXXXXXXXXX)

+ export FONT_CONFIG_CACHE=$(mktemp -d -t font_tmp.XXXXXXXXXX)

)


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


リンク先より「Copy the tessdata_best/eng.traineddata (for english training) from the tessdata you just cloned and past at tesseract/tessdata/」との事です。


学習準備だそうです。

PANGOCAIRO_BACKEND=fc \

~/tesseract/src/training/tesstrain.sh \

--fonts_dir /Library/Fonts \

--lang eng \

--linedata_only \

--noextract_font_properties \

--exposures "0" \

--langdata_dir ~/tesseract/java/langdata \

--tessdata_dir ~/tesseract/tessdata \

--fontlist "Verdana" \

--output_dir ~/tesstutorial/engtrain


PANGOCAIRO_BACKEND=fc \

~/tesseract/src/training/tesstrain.sh \

--fonts_dir /Library/Fonts \

--lang eng \

--linedata_only \

--noextract_font_properties \

--exposures "0" \

--langdata_dir ~/tesseract/java/langdata \

--tessdata_dir ~/tesseract/tessdata \

--fontlist "Times New Roman," \

--output_dir ~/tesstutorial/engeval


mkdir -p ~/tesstutorial/engoutput


SCROLLVIEW_PATH=~/projects/tesseract/java \

~/tesseract/src/training/lstmtraining \

--debug_interval 100 \

--traineddata ~/tesstutorial/engtrain/eng/eng.traineddata \

--net_spec '[1,36,0,1 Ct3,3,16 Mp3,3 Lfys48 Lfx96 Lrx96 Lfx256 O1c111]' \

--model_output ~/tesstutorial/engoutput/base \

--learning_rate 20e-4 \

--train_listfile ~/tesstutorial/engtrain/eng.training_files.txt \

--eval_listfile ~/tesstutorial/engeval/eng.training_files.txt \

--max_iterations 5000 \

> ~/tesstutorial/engoutput/basetrain.log 2>&1 &


tail -f ~/tesstutorial/engoutput/basetrain.log


lstmtraining \

--stop_training \

--continue_from ~/tesstutorial/engoutput/base_checkpoint \

--traineddata ~/tesstutorial/engeval/eng/eng.traineddata \

--model_output ~/tesstutorial/base.traineddata


2019/07/05 06:20 はに への返信

はに さんへ

ご提案いただいた件ですが、やはり敷居が高くどうにも手が出せません。

申し訳ありません。


それでOCR の件ですが、文字の学習かフォントで7 セグメントを認識させる必要があることが判明しました。

それと表示が文字発光系だとTesseract は認識率が下がるのだそうです。白い紙に黒い文字を想定して開発されているのかもです。

2019/10/16 21:50 ni_ki への返信

OCR と直接関係ないですが、Comppressor がmacOS Catalina ローンチ直前にアップデートされたので、てっきりその時に32bit から脱却したと思っておりましたが、一つ前に戻してもすべての機能が動くようです。以前からすべて64bit でも動くようになっていたのかと思います。

なぜ32bit のプロセスを起動していたのかは不明です。

2019/10/16 23:45 ni_ki への返信

Final Cut Pro X に動画を静止画に書き出すイメージシーケンスがあると以前書いたと思いますが、今回の用途には使えませんでした。

0.5fps の動画を30fps とかに返還して静止画にしてくれます。何故、変換するのかは不明です。

QuickTime Player 7 がmacOS Catalina で動かないのでやはりコマンドで処理ですかね。

2019/12/05 21:04 ni_ki への返信

だらだら書いているので環境を今一度書き込んでおきます。

macOS High Sierra 10.13.6 Tesseract 4.1 を仮想環境VMware Fusion で行っています。Ubuntu と違い1 スレッドでしか処理しません。

Ubuntu の方は4 スレッド動きますから処理時間が、それなりに違うようです。違うのは確認しましたが、何割違うかの定量はできていません。

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

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

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