Open4

【python】PDFの翻訳

YuichiYuichi

ファイル分割して、ファイルあたりの文字数を減らす

環境設定
pipでpypdfをインストールします。

pip install pypdf

https://qiita.com/ryutarom128/items/6e5d36efb136f9595f07

分割

from pypdf import PdfReader, PdfWriter

FILE_NAME = "input.pdf"
CHUNK_SIZE = 200  # 100ページごとに分割

# PDFを読み込む
reader = PdfReader(FILE_NAME)
total_pages = len(reader.pages)

# 100ページごとに分割
for i in range(0, total_pages, CHUNK_SIZE):
    writer = PdfWriter()
    # このチャンクの開始〜終了ページを設定
    chunk_pages = reader.pages[i:i + CHUNK_SIZE]
    
    # ページを追加
    for page in chunk_pages:
        writer.add_page(page)
    
    # ファイルに書き出し
    part_num = i // CHUNK_SIZE + 1
    output_file = f"part_{part_num}.pdf"
    with open(output_file, "wb") as fp:
        writer.write(fp)

    print(f"{output_file} を出力しました")

Deepl翻訳

結合

from pypdf import PdfReader, PdfWriter

# 結合したいPDFファイル名(順番も重要)
pdf_files = [
    "part_1 ja.pdf",
    "part_2 ja.pdf",
    # 必要に応じて追加
]

writer = PdfWriter()

# 各PDFを読み込んでページを追加
for file_name in pdf_files:
    reader = PdfReader(file_name)
    for page in reader.pages:
        writer.add_page(page)

# 結合後のファイルを出力
output_file = "combined.pdf"
with open(output_file, "wb") as fp:
    writer.write(fp)

print(f"{output_file} を出力しました")
YuichiYuichi


google翻訳も早い。ある程度ファイル分割は必要
無料なのがいい

YuichiYuichi

ページ分割しても10MB以下にならない時に圧縮する
https://qiita.com/alice37308108/items/c9859a66981956e1dad1

pip install PyMuPDF
import fitz  # PyMuPDF

def compress_pdf(input_pdf, output_pdf):
    """
    指定したPDFファイルを圧縮して保存します。

    Parameters:
        input_pdf (str): 入力PDFファイルのパス
        output_pdf (str): 圧縮後のPDFファイルの保存先パス
    """
    doc = fitz.open(input_pdf)
    doc.save(
        output_pdf,
        deflate=True,    # 未圧縮ストリームを圧縮
        garbage=4,       # 未使用オブジェクトを削除
        clean=True       # 冗長な情報を削除
    )
    doc.close()

# 使い方例
# compress_pdf("input.pdf", "output_compressed.pdf")