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
相关产品推荐
相关产品推荐

