■PDFのテキスト化のpythonコード例1
import fitz # PyMuPDF
import pytesseract
from PIL import Image
import io
# Tesseractのインストールパスを指定(例: Windowsの場合)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def pdf_to_text(pdf_path, language='eng'):
# PDFを開く
pdf_document = fitz.open(pdf_path)
text = ""
#text = pdf_to_text(pdf_path, language='eng')
# 各ページごとに画像に変換し、OCRでテキストを抽出
for page_num in range(pdf_document.page_count):
page = pdf_document[page_num]
# PDFページを画像にレンダリング
pix = page.get_pixmap(dpi=300)
img = Image.open(io.BytesIO(pix.tobytes()))
# 画像からテキストを抽出
page_text = pytesseract.image_to_string(img, lang=language)
text += page_text + "\n\n" # ページごとに改行を追加
pdf_document.close()
# 全角を半角に変換
#text = text.replace('’', "'") # 全角アポストロフィ → 半角アポストロフィ
text = text.replace('’', "'").replace('“', '"').replace('”', '"') # 必要に応じて追加
return text
# 使用例
pdf_path = 'sample.pdf'
# 'eng'は英語, 'jpn'は日本語, 'eng+jpn'は英語と日本語の両方
#text = pdf_to_text(pdf_path, language='eng+jpn')
text = pdf_to_text(pdf_path, language='eng')
print(text) #テキストの表示。必要な場合はファイル出力に
=======
■PDFのテキスト化のpythonコード例2
=======
■PDFのテキスト化のpythonコード例2
import fitz # PyMuPDF
import pytesseract
from PIL import Image
import io
# Tesseractのインストールパスを指定(例: Windowsの場合)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def pdf_to_text(pdf_path, language='eng'):
# PDFを開く
pdf_document = fitz.open(pdf_path)
text = ""
# 各ページごとに画像に変換し、OCRでテキストを抽出
for page_num in range(pdf_document.page_count):
page = pdf_document[page_num]
# PDFページを画像にレンダリング
pix = page.get_pixmap(dpi=300)
img = Image.open(io.BytesIO(pix.tobytes()))
# 画像からテキストを抽出
page_text = pytesseract.image_to_string(img, lang=language)
text += page_text + "\n\n" # ページごとに改行を追加
pdf_document.close()
# 全角を半角に変換
# text = text.replace('’', "'").replace('“', '"').replace('”', '"') # 必要に応じて追加
return text
# 全角の句読点や記号を半角に変換する関数
def convert_fullwidth_to_halfwidth(text):
text = text.replace(',', ',') # 全角コンマ → 半角カンマ
text = text.replace('。', '.') # 全角ピリオド → 半角ピリオド
text = text.replace(':', ':') # 全角コロン → 半角コロン
text = text.replace(';', ';') # 全角セミコロン → 半角セミコロン
text = text.replace('!', '!') # 全角感嘆符 → 半角感嘆符
text = text.replace('?', '?') # 全角疑問符 → 半角疑問符
text = text.replace('’', "'") # 全角アポストロフィ → 半角アポストロフィ
text = text.replace('“', '"') # 全角二重引用符始 → 半角二重引用符始
text = text.replace('”', '"') # 全角二重引用符終 → 半角二重引用符終
text = text.replace('(', '(') # 全角括弧開 → 半角括弧開
text = text.replace(')', ')') # 全角括弧閉 → 半角括弧閉
text = text.replace('[', '[') # 全角角括弧開 → 半角角括弧開
text = text.replace(']', ']') # 全角角括弧閉 → 半角角括弧閉
text = text.replace('{', '{') # 全角波括弧開 → 半角波括弧開
text = text.replace('}', '}') # 全角波括弧閉 → 半角波括弧閉
text = text.replace('・', '・') # 全角中黒 → 半角中黒
text = text.replace('~', '~') # 全角チルダ → 半角チルダ
text = text.replace(' ', ' ') # 全角スペース → 半角スペース
return text
# 使用例
# PDFからテキストを抽出し、全角を半角に変換
pdf_path = 'sample.pdf'
text = pdf_to_text(pdf_path, language='eng+jpn')
text = convert_fullwidth_to_halfwidth(text)
print(text)