Pythonは、その強力なライブラリと柔軟性により、PDFからテキストを抽出し、それをExcelに変換するための優れたツールです。この記事では、Pythonを使用してPDFからテキストを抽出し、それをExcelに変換する方法を説明します。
必要なライブラリ
このタスクを実行するためには、以下のPythonライブラリが必要です。
- pdfminer.six: PDFからテキスト情報を抽出するためのライブラリ。
- openpyxl: 抽出したテキストデータをExcelに書き込むためのライブラリ。
これらのライブラリは、Pythonのパッケージ管理システムであるpipを使用して簡単にインストールできます。
pip install pdfminer.six
pip install openpyxl
PDFからテキストを抽出する
まず、pdfminer.six
ライブラリを使用してPDFからテキスト情報を抽出します。以下にそのコードの一部を示します。
from pdfminer3.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer3.converter import PDFPageAggregator
from pdfminer3.pdfpage import PDFPage
from pdfminer3.layout import LAParams, LTTextContainer
resourceManager = PDFResourceManager()
device = PDFPageAggregator(resourceManager, laparams=LAParams())
pdf_file_name = './sample.pdf'
with open(pdf_file_name, 'rb') as fp:
interpreter = PDFPageInterpreter(resourceManager, device)
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
layout = device.get_result()
for lt in layout:
if isinstance(lt, LTTextContainer):
print(lt.get_text())
device.close()
このコードは、指定したPDFファイルを開き、各ページを処理してテキスト情報を抽出します。
テキスト情報をExcelに変換する
次に、openpyxl
ライブラリを使用して抽出したテキスト情報をExcelに書き込みます。以下にそのコードの一部を示します。
import pandas as pd
def pdfminer_config(line_overlap, word_margin, char_margin,line_margin, detect_vertical):
laparams = LAParams(line_overlap=line_overlap, word_margin=word_margin, char_margin=char_margin, line_margin=line_margin, detect_vertical=detect_vertical)
resource_manager = PDFResourceManager()
device = PDFPageAggregator(resource_manager, laparams=laparams)
interpreter = PDFPageInterpreter(resource_manager, device)
return (interpreter, device)
pdf_file_name = './sample.pdf'
work_file = './work_file.xlsx'
list1 = ['','','','','','','','']
df_x = pd.DataFrame([list1])
df_x.columns = ['page', 'word', 'x1','x2','y1','y2','width','hight']
int_page = 0
ii_index = 0
with open(pdf_file_name, 'rb') as fp:
interpreter, device = pdfminer_config(0.5, 0.1, 0.1, 0.5, False)
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
layout = device.get_result()
for lt in layout:
if isinstance(lt, LTTextContainer):
df_x.loc[ii_index] = [int_page, lt.get_text(), lt.x0, lt.x1, lt.y0, lt.y1, lt.width, lt.height]
ii_index += 1
int_page += 1
df_x.to_excel(work_file)
このコードは、抽出したテキスト情報をExcelファイルに書き込みます。
以上が、Pythonを使用してPDFからテキストを抽出し、それをExcelに変換する基本的なプロセスです。このプロセスは、注文書や見積書などの業務文書を自動化するための強力なツールとなります。ただし、このプロセスは完全ではなく、PDFの形式や内容によっては適切に機能しない場合もあります。そのため、具体的なタスクに合わせてコードを調整することが必要です。