今回はPyOCRで文字認識したテキストをエクセルに出力する方法を解説します。
具体的にはXlsxWriterというライブラリを使用してPythonスクリプトからエクセル操作を行います。
この記事は以下のような方を対象者としています。
- python初学者の方
- pythonで文字認識したテキストをエクセルに出力したい方
- pythonでエクセルへの出力方法を探している方
前置き:pythonでエクセルへ出力する#
pythonでエクセル関連の操作を行う場合にはxlsxwriterライブラリを使います。
xlsxwriterではセルの結合やセルのサイズ調整、テキストの出力から画像のエクセルへの貼り付け等ができます。
Pythonでエクセル操作その1:環境構築をしよう#
まずはPythonでエクセル操作を行うための準備をしましょう。
実際に私が環境構築した時の手順を説明します。
下記が私のPCのPythonのライブラリのバージョンです。
※これらコマンドはターミナル上で実行しています。
実行コマンド:
python --version
出力結果:
Python 2.7.15
ちなみに私はMacを使うため本記事もMacでの環境構築を前提として解説します。
Pythonでエクセル操作その2:xlsxwriterのインストール#
まずは下記コマンドでxlsxwriterライブラリのインストールをしましょう。
実行コマンド:
sudo pip install xlsxwriter
出力結果:
Successfully built xlsxwriter
Install Successfulのような文言が出力されれば正常にxlsxwriterインストールがされていると思います。
念のため下記コマンドでxlsxwriterがインストールできているかどうか確認しましょう。
実行コマンド:
pip list | grep XlsxWriter
出力結果:
XlsxWriter 1.3.7
Pythonでエクセル操作その3:エクセルに出力してみよう#
それでは早速エクセルに出力するためのpythonスクリプトを書きましょう。
例としてA列の1行目にtestという文字を格納したtest.xlsxというファイル名を出力するスクリプト(test.py)を書きます。
<!-- xlsxwriterライブラリをインポート -->
import xlsxwriter
<!-- 列を設定 0 = A列, 1 = B列 -->
line = 0
<!-- 行を設定 0 = 1行目, 1 = 2行目 -->
row = 0
<!-- test.xlsxというエクセルファイルを出力 -->
workbook = xlsxwriter.Workbook("test.xlsx")
<!-- testという名前のシートを作成 -->
worksheet = workbook.add_worksheet("test")
<!-- line,rowで指定したセルにtestというテキストを格納 -->
worksheet.write(line,row,"test")
<!-- エクセルファイルへの編集を保存する -->
workbook.close()
上記test.pyを作成したら、下記コマンドでtest.pyを実行しましょう。
python test.py
これでtest.pyと同じフォルダ内にtest.xlsxというファイル名のエクセルファイルが出力されます。
Pythonでエクセル操作その4:PyOCRで文字認識したテキストをエクセルに出力#
続いて画像からテキストを認識し出力するプログラムと結合しエクセルに認識文字を出力しましょう。
先ほど書いたエクセルへの出力文字部分を文字認識で取得した値で置き換えてあげれば完了です。
import sys
from PIL import Image
import pyocr
import pyocr.builders
import xlsxwriter
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
<!-- 同じフォルダ内のimage.pngから文字認識を行い結果をtxtに格納 -->
txt = tool.image_to_string(
Image.open("./image.png"),
lang="jpn",
builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)
line = 0
row = 0
workbook = xlsxwriter.Workbook("test.xlsx")
worksheet = workbook.add_worksheet("test")
<!-- エクセルへの出力結果部分に文字認識結果を保持する変数txtを指定 -->
worksheet.write(line, row, txt)
workbook.close()
上記コマンドが正常に完了すれば、text.xlsxファイルに下記文字認識で取得したテキストがエクセルに出力されます。
さいごに#
ここまでお読みいただきありがとうございました。
私のブログ記事を読んでいる方の中には海外転職・海外移住への興味がある方もいらっしゃるかと思います。
私自身ダナンで働き始めて7年目になりますが、海外就職を実現するために大事なのは英語力と開発現場で働いた経験だと感じました。
もし今後海外移住・海外就職を本気で実現させたい方はぜひこれらのサービスを活用してみてください。
レアジョブ - 実務で使える英語力を身につけよう#
レアジョブ英会話は英会話力の向上に特化したサービスです。 私の友人もレアジョブを通じて0から学習を続け、現在はベトナム人のエンジニアとも英語でコミュニケーションが取れるレベルまで英会話力を伸ばすことができました。
レアジョブが選ばれる理由は多岐にわたりますが、主な理由としては下記3点が考えられます。
- 優秀な講師陣:公用語が英語であるフィリピン人の方が講師となり、生きた英語を身につけることができる
- 豊富な教材: 5,000以上の教材を提供しており、学習者のレベルや目的に応じて最適な教材を選べます。
- 安心のサポート体制:初心者でも安心して始められるように、日本人カウンセラーが学習のサポートをしてくれます。
海外移住計画の第一歩として、スピーキング力を身につけたいと考えている方は、ぜひこちらの無料体験を試してみてはいかがでしょうか。