[Python] Lassen Sie uns automatisch englische PDF-Dateien (ohne darauf beschränkt zu sein) mit DeepL- oder Google-Übersetzung übersetzen, um daraus eine Textdatei zu machen.

8/6 Nachtrag

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.

Einführung

Es ist schwer, englische Zeitungen zu lesen, nicht wahr? Lassen Sie es uns übersetzen, die Aussichten werden viel besser sein.

Methode

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.

Code

Zum Ausführen sind Selen und Pyperclip erforderlich. Bitte installiere.
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)

wie benutzt man

  1. Speichern Sie den obigen Code als Python-Datei mit einem geeigneten Namen.
  2. Kopieren Sie den PDF-Text (usw.).
  3. Führen Sie das Programm aus.
  4. Geben Sie nach Aufforderung verschiedene Einstellungen ein.
  5. Wenn Sie fertig sind (haben Sie bis zu diesem Punkt nur eine Kopie des englischen Textes), drücken Sie die Eingabetaste.
  6. Der Browser öffnet sich und bewegt sich frei. Warten Sie also, während Sie ihn betrachten.
  7. Lesen Sie das Übersetzungsergebnis.

Bei der Ausgabe einer Textdatei versuche ich vorerst, die Zeile am Satzzeichen zu durchbrechen. Schreiben Sie sie daher gegebenenfalls neu.

Zusammenfassung

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

[Python] Lassen Sie uns automatisch englische PDF-Dateien (ohne darauf beschränkt zu sein) mit DeepL- oder Google-Übersetzung übersetzen, um daraus eine Textdatei zu machen.
Übersetzen Sie DeepL automatisch mit Python und Selen ins Englische
Experimentieren Sie mit Python, um ein PDF für Selbstversorger für Kindle zu erstellen
Lassen Sie uns eine GUI mit Python erstellen.
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Englische Spracherkennung mit Python [Rede zu Text]
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Lassen Sie uns mit Python langsam sprechen
Erstellen Sie ein Webframework mit Python! (1)
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie ein Webframework mit Python! (2)
So legen Sie Google Text & Tabellen in einem Ordner zusammen in einer TXT-Datei mit Python ab
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Lesen einer CSV-Datei mit Python 2/3
Ich möchte ein Spiel mit Python machen
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Ersetzen wir UWSC durch Python (5) Machen wir einen Roboter
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Ich möchte mit Python in eine Datei schreiben
[Python] PDF automatisch mit DeepL übersetzen, dabei das Originalformat beibehalten. [Windows / Word erforderlich]
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
Konvertieren Sie eine Textdatei mit hexadezimalen Werten in eine Binärdatei
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
[Super einfach] Machen wir einen LINE BOT mit Python.
Lassen Sie uns mit Python einen Web-Socket-Client erstellen. (Zugriffstoken-Authentifizierung)
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
Senden Sie eine Nachricht an Google Hangouts Chat mit einem Thread (Python)
Machen Sie eine Lotterie mit Python
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Hören wir auf zu kopieren. Wir stellen vor: flati, ein Modul, das sich mit Python abflacht
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Fühlen wir uns wie ein Materialforscher mit Python [Einführung in Pymatgen]
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Python-Spezialcodec, der zu wissen scheint, aber nicht weiß
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Lassen Sie uns einen Web-Chat mit WebSocket mit AWS serverless (Python) durchführen!
[ROS2] So spielen Sie eine Bag-Datei mit Start im Python-Format ab
Versuchen Sie, Ihrer IFC-Datei mit IfcOpenShell Python eine Wand hinzuzufügen
[Python] Als ich versuchte, ein Dekomprimierungswerkzeug mit einer Zip-Datei zu erstellen, die ich gerade kannte, war ich süchtig nach sys.exit ()