Verbessert, um das Ausgabeergebnis besser sichtbar zu machen Fortsetzung [Python] Lassen Sie uns automatisch englische PDF-Dateien (ohne darauf beschränkt zu sein) mit DeepL- oder Google-Übersetzung in eine Textdatei ohne HTML übersetzen.
Es ist schwer, englische Zeitungen zu lesen, nicht wahr? Lassen Sie es uns übersetzen, die Aussichten werden viel besser sein.
Das Problem bei der Übersetzung von PDFs ist die Schwierigkeit, mit PDF-Dateien umzugehen. Selbst wenn Sie sich darauf verlassen, dass die Bibliothek Zeichen automatisch extrahiert, funktioniert dies nicht oder die Reihenfolge der Sätze ist falsch. Diesmal möchte ich also über die Zwischenablage übersetzen.
Der Fluss ist
Öffnen Sie die PDF-Datei mit Chrome usw. und wählen Sie alle "Strg + A" zum Kopieren aus ↓ Führen Sie das Programm aus ↓ Teilen Sie Sätze so auf, dass sie das Zeichenlimit (5000 Zeichen) nicht überschreiten und durch Punkte getrennt sind. ↓ Auf eine Übersetzungsseite werfen ↓ Ergebnisse bekommen ↓ Ausgabe
Es ist wie es ist.
pip install selenium
pip install pyperclip
Bitte legen Sie es im selben Verzeichnis ab → Chrome-Treiber
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
import pyperclip as ppc
DRIVER_PATH = 'chromedriver.exe'
options = Options()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server="direct://"')
options.add_argument('--proxy-bypass-list=*')
options.add_argument('--start-maximized')
def parse_merge(text, n=4900):
sentences = []
sentence = ""
for i in " ".join(text.splitlines()).split("."):
if len(sentence) + len(i) > n:
sentences.append(sentence)
sentence = ""
sentence += i + "."
sentences.append(sentence)
return sentences
def TranslateFromClipboard(tool, write, filename, isPrint):
driver = webdriver.Chrome(executable_path=DRIVER_PATH,
chrome_options=options)
url = 'https://www.deepl.com/ja/translator' if tool == "DeepL" else 'https://translate.google.co.jp/?hl=ja&tab=TT&authuser=0#view=home&op=translate&sl=auto&tl=ja'
driver.get(url)
transSentence = ""
if tool == "DeepL":
textarea = driver.find_element_by_css_selector(
'.lmt__textarea.lmt__source_textarea.lmt__textarea_base_style')
elif tool == "GT":
textarea = driver.find_element_by_id('source')
for sentence in parse_merge(ppc.paste()):
cbText = ppc.paste()
ppc.copy(sentence)
textarea.send_keys(Keys.CONTROL, "v")
ppc.copy(cbText)
transtext = ""
while transtext == "":
if tool == "DeepL":
transtext = driver.find_element_by_css_selector(
'.lmt__textarea.lmt__target_textarea.lmt__textarea_base_style'
).get_property("value")
elif tool == "GT":
try:
transtext = driver.find_element_by_css_selector(
'.tlid-translation.translation').text
except:
pass
time.sleep(1)
if isPrint: print(transtext)
transSentence += transtext
textarea.send_keys(Keys.CONTROL, "a")
textarea.send_keys(Keys.BACKSPACE)
driver.quit()
if write:
with open(filename, "w", encoding='UTF-8') as f:
for sentence in transSentence.split("。"):
f.write(sentence + "。\n")
if __name__ == "__main__":
args = ["DeepL", False, "translated_text.txt", True]
if input("1. DeepL 2.GoogleTranslate ") == "2": args[0] = "GT"
if input("Möchten Sie das Übersetzungsergebnis in eine Datei schreiben? Y./n ") == "y":
args[1] = True
filename = input(
"Geben Sie einen Namen für die Ausgabedatei ein (Standard ist'translated_text.txt') ")
if filename:
args[2] = filename
if input("Möchten Sie den Fortschritt der Übersetzung hier sehen? Y./n ") == "n":
args[3] = False
input("Drücken Sie die Eingabetaste, wenn Sie fertig sind")
TranslateFromClipboard(*args)
Bei der Ausgabe einer Textdatei versuche ich vorerst, die Zeile am Satzzeichen zu durchbrechen. Schreiben Sie sie daher gegebenenfalls neu.
DeepL scheint in der Lage zu sein, Dokumente gegen eine Gebühr zu übersetzen, aber wenn möglich, diejenigen, die kostenlos davon profitieren möchten, Ursprünglich können Dokumente mit Google Translation übersetzt werden, aber Menschen, die verzweifelt sind, weil es Orte gibt, die nicht übersetzt wurden oder die Umgebung von Formeln durcheinander ist. Probieren Sie es aus, vielleicht macht es Fortschritte.
Recommended Posts