You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Word/PDF英译法程序报错求助

大文档翻译时googletrans库报错问题

背景

  • 编程新手,使用Windows 11系统、Python 3.12.3版本
  • 需求:将84,332KB的超大Word文档(由PDF转换而来)或原PDF文件从英文翻译成法语

Word文档处理代码及TypeError报错

代码

from docx import Document
from googletrans import Translator

def translate_docx(input_file, output_file):
    # Open the input Word document
    doc = Document(input_file)

    # Create a translator object
    translator = Translator()

    # Initialize an empty Document object for the translated document
    translated_doc = Document()

    # Translate each paragraph in the input document
    for para in doc.paragraphs:
        # Translate the text from English to French
        translated_text = translator.translate(para.text, src='en', dest='fr').text
        
        # Add the translated text to the translated document
        translated_doc.add_paragraph(translated_text)

    # Save the translated document to the specified file
    translated_doc.save(output_file)


translate_docx(r"C:\Users\shane\coding\amtg_handbook.docx", r"C:\Users\shane\coding\amtg_handbook_french.docx")

报错信息

Traceback (most recent call last):
  File "C:\Users\shane\coding\new.py", line 26, in <module>
    translate_docx(r"C:\Users\shane\coding\amtg_handbook.docx", r"C:\Users\shane\coding\amtg_handbook_french.docx")
  File "C:\Users\shane\coding\new.py", line 17, in translate_docx
    translated_text = translator.translate(para.text, src='en', dest='fr').text
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shane\AppData\Local\Programs\Python\Python312\Lib\site-packages\googletrans\client.py", line 219, in translate
    parsed = json.loads(data[0][2])
             ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shane\AppData\Local\Programs\Python\Python312\Lib\json\__init__.py", line 339, in loads
    raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not NoneType

PDF文档处理代码及IndexError报错

代码

import fitz
from googletrans import Translator

def translate_pdf(input_file, output_file):
    # Open the input PDF file
    input_pdf = fitz.open(input_file)

    # Create a translator object
    translator = Translator()

    # Initialize an empty PDF writer
    output_pdf = fitz.open()

    # Iterate through each page of the input PDF
    for page_num in range(input_pdf.page_count):
        # Get the text of the current page
        page = input_pdf.load_page(page_num)
        text = page.get_text()

        # Translate the text from English to French
        translated_text = translator.translate(text, src='en', dest='fr').text

        # Create a new page in the output PDF with the translated text
        output_page = output_pdf.new_page(width=page.rect.width, height=page.rect.height)
        output_page.insert_text((10, 10), translated_text)

    # Save the output PDF to the specified file
    output_pdf.save(output_file)

    # Close the input and output PDF files
    input_pdf.close()
    output_pdf.close()


translate_pdf(r"C:\Users\shane\coding\amtg_handbook.pdf", r"C:\Users\shane\coding\amtg_handbook_french.pdf")

报错信息

Traceback (most recent call last):
  File "C:\Users\shane\coding\PDF_English_French.py", line 35, in <module>
    translate_pdf(r"C:\Users\shane\coding\amtg_handbook.pdf", r"C:\Users\shane\coding\amtg_handbook_french.pdf")
  File "C:\Users\shane\coding\PDF_English_French.py", line 21, in translate_pdf
    translated_text = translator.translate(text, src='en', dest='fr').text
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shane\AppData\Local\Programs\Python\Python312\Lib\site-packages\googletrans\client.py", line 222, in translate
    translated_parts = list(map(lambda part: TranslatedPart(part[0], part[1] if len(part) >= 2 else []), parsed[1][0][0][5]))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shane\AppData\Local\Programs\Python\Python312\Lib\site-packages\googletrans\client.py", line 222, in <lambda>
    translated_parts = list(map(lambda part: TranslatedPart(part[0], part[1] if len(part) >= 2 else []), parsed[1][0][0][5]))
                                                            ~~~~^^^
IndexError: list index out of range

因问题超出我的Python技能范围,恳请提供帮助。

内容的提问来源于stack exchange,提问作者Forrest Beal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:56:02