出典:
★注意!テキスト読出は完璧ではなく、形が崩れることもある。
データにしたら必ず全レコードの形を確認すること。
以下、コード例(出典から引用)
# 1:ライブラリ設定
import fitz # pymupdfライブラリ
import openpyxl as px
from openpyxl.styles import Alignment
# 2:PDFテキストを格納するリスト作成
txt_list = []
# 3:PDFファイルを読み込む
filename = 'sample.pdf'
doc = fitz.open(filename)
# 4:1ページずつテキストデータを取得
for page in range(len(doc)):
text = doc[page].get_text()
text = text.replace('\n', '')
txt_list.append([page+1,text])
# 5:新しいExcelファイルを作成
wb = px.Workbook()
ws = wb.active
# 6:Excelの書式設定
my_alignment=Alignment(vertical='top', wrap_text=True)
ws.column_dimensions['B'].width = 100
# 7:Excelのヘッダーを出力
headers = ['ページ', '内容']
for i, header in enumerate(headers):
ws.cell(row=1, column=1+i, value=headers[i])
# 8:ExcelにPDFのテキストを出力
for y, row in enumerate(txt_list):
for x, cell in enumerate(row):
ws.cell(row= y+2, column= x+1, value=cell)
ws.cell(row= y+2, column= x+1).alignment = my_alignment
# 9:Excelファイルの保存
xlname = filename.split('.')[0] + '_excel.xlsx'
wb.save(xlname)
import fitz # pymupdfライブラリ
import openpyxl as px
from openpyxl.styles import Alignment
# 2:PDFテキストを格納するリスト作成
txt_list = []
# 3:PDFファイルを読み込む
filename = 'sample.pdf'
doc = fitz.open(filename)
# 4:1ページずつテキストデータを取得
for page in range(len(doc)):
text = doc[page].get_text()
text = text.replace('\n', '')
txt_list.append([page+1,text])
# 5:新しいExcelファイルを作成
wb = px.Workbook()
ws = wb.active
# 6:Excelの書式設定
my_alignment=Alignment(vertical='top', wrap_text=True)
ws.column_dimensions['B'].width = 100
# 7:Excelのヘッダーを出力
headers = ['ページ', '内容']
for i, header in enumerate(headers):
ws.cell(row=1, column=1+i, value=headers[i])
# 8:ExcelにPDFのテキストを出力
for y, row in enumerate(txt_list):
for x, cell in enumerate(row):
ws.cell(row= y+2, column= x+1, value=cell)
ws.cell(row= y+2, column= x+1).alignment = my_alignment
# 9:Excelファイルの保存
xlname = filename.split('.')[0] + '_excel.xlsx'
wb.save(xlname)