今回は「テキストデータをExcelに張り付けて表を作る作業」を自動化してみましょう!!
これを 「【文字起こし】pythonでOCRを使ってみた」の「画像をテキストに変換する方法」と合わせることで、
実験データの写真を撮る→すぐにExcelの表が完成!!
ということができます。
非常に効率的ですね!!他の用途としては、会社の資料作りにも役に立つと思います。
ではさっそくやっていきましょう。
必要なもの
今回必要になるものは
- jupyternotebook
のみです。
xlwingsというモジュールを使いますが、Anacondaをインストールしてあれば何もしなくても使うことができます。
Anacondaのインストール方法は 「【python】AnacondaでDjangoを使うには」 を参考のこと。
下準備
写真からテキストデータを抽出

今回はこの写真をテキストデータにしていきます。
この写真を「data.png」として保存しておきます。
OCRでテキストに変換
次にOCRで画像をテキストに変換します。詳しいやり方は 「【文字起こし】pythonでOCRを使ってみた」 を見ていただくとわかるかと思います。
from PIL import Image import pyocr import pyocr.builders tools = pyocr.get_available_tools() tool = tools[0] txt = tool.image_to_string( Image.open('data.png'), lang="eng", builder=pyocr.builders.TextBuilder(tesseract_layout=6) ) print( txt ) file = open('text-data.txt', 'w') file.write(txt) file.close() print("image to text : Done")
jupyternotebookで実行して、画像をテキストに変更します。
さらに変換したテキストを「text-data.txt」として保存しています。
file_list.txtを作る
file_list.txtは書式を決めています。
中身はこのような形になります。
#data path sheet-name offsetX offsetY text-data.txt Sheet1 0 0
色々書いてありますが
- data path:貼り付けたいデータの相対パスか絶対パス
- sheet name:Excelのテンプレートシート名
- offsetX:貼り付けたいデータのX始点
- offsetY:貼り付けたいデータのY始点
ということです。
Excelにしていこう!
では、テキストデータをExcelに変換していきましょう。
import xlwings as xw file_list = "file_list.txt" wb = xw.Book() for line_data in open(file_list, "r"): if line_data[0] == "#": continue split_line_data = line_data.split() sheets = split_line_data[1] offset_x = int(split_line_data[2]) + 1 offset_y = int(split_line_data[3]) + 1 y = 0 for text_data in open(split_line_data[0], "r"): data = text_data.split() wb.sheets[sheets].range(offset_y + y, offset_x).value = data y += 1 #Save Excel wb.save() wb.close() print("text to excel : Done")
新たに「Book1」が作られていると思います。ぼくはこのような結果になりました。

そこそこの精度で表にできましたね!!
反省点
元データの写真(data.png)、実はExcelのスクショです。
なので、「ExcelのスクショをExcelに変換」という意味の分からないことになってます。
これには理由があって、写真の解像度がよくないとひどい表が出来上がってしまうのです…。
おそらくOCRの精度の問題かと思うので、精度を上げる何かしらの方法があればやっていきたいと思います。
参考



コメント
bookmarked!!, I love yoսr website!
Thank you for your comment !!
Hello There. I found your weblog the use of msn. That is a very
neatfly written article. I’ll be sure to bookmark it and return to
learn extra of your helpful information. Thank you for the
post. I’ll definitely comeback.
Thank you for your comment !!
[…] […]