DeepL에서 PDF의 줄 바꿈 없는 번역을 Python으로 수행하는 버전 2
의 목적
캡처 키와 Selenium을 사용하여 deepl 번역을 실행합니다. 줄을 바꿀 필요가 없습니다.
github
설치하다.
웹 드라이브를 driver install 에서 설치한 다음 작업 디렉터리와 같은 곳에 놓으십시오.
다음은python에 필요한 패키지를 설치합니다.
pip install selenium pyperclip keyboard pyautogui
코드
from selenium import webdriver
from selenium.webdriver.common.by import By
import pyperclip
import re
import keyboard
import pyautogui
import sys
def main():
try:
pyautogui.hotkey("ctrl", "c") # Copy text from select text
try:
# Make selenium the top screen
driver.minimize_window()
driver.maximize_window()
except:
pass
# Get input fields using xpath
text_area = driver.find_element(By.XPATH, "//*[@id='panelTranslateText']/div[3]/section[1]/div[3]/div[2]/textarea")
# Empty input fields
text_area.clear()
# Accepts clipboard values as variables and removes line breaks
text = pyperclip.paste()
text = re.sub(r"([a-zA-Z0-9,]+)\r\n|([a-zA-Z0-9,]+)\n|([a-zA-Z0-9,]+)\r", r"\1 ", text).replace(" ", " ")
# To remove "-¥r¥n", encode once, then remove and decode
text = re.sub(b"\xe2\x80\x90\r\n|\xe2\x80\x90\r|\xe2\x80\x90\n", b"", text.encode()).decode()
text = re.sub(r"\r\n|\r|\n", "\n\n", text).replace("\n\n\n", "\n")
pyperclip.copy(text)
text_area.click()
pyautogui.hotkey("ctrl", "v")
driver.find_element(By.ID, "tabTranslateText").click()
except:
print("An error has occurred.")
if __name__ == "__main__":
lang = sys.argv[1] if len(sys.argv) == 2 else "ja"
url = f"https://www.deepl.com/{lang}/translator"
driver = webdriver.Chrome()
driver.get(url)
keyboard.add_hotkey("ctrl+q", main)
keyboard.wait("esc")
해설
가져오기
원하는 매크로 패키지를 가져옵니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
import pyperclip
import re
import keyboard
import pyautogui
import sys
줄 바꿈 복사 및 삭제
1 선택한 텍스트를 먼저 복사합니다.
pyautogui.hotkey("ctrl", "c")
이어서 클립보드의 텍스트를python의 변수로 수신합니다.다른 줄 바꿈을 삭제합니다.text = pyperclip.paste()
text = re.sub(r"([a-zA-Z0-9,]+)\r\n|([a-zA-Z0-9,]+)\n|([a-zA-Z0-9,]+)\r", r"\1 ", text).replace(" ", " ")
3'load-ing'등 단어가 중간에 줄을 바꾸는 문자가 있을 때text.replace(r"-\r\n", "")
는 삭제할 수 없기 때문에 바이너리 문자열을 바이너리 형식으로 삭제한다.text = re.sub(b"\xe2\x80\x90\r\n|\xe2\x80\x90\r|\xe2\x80\x90\n", b"", text.encode()).decode()
네 줄에 다른 줄이 있으면 공백을 남기고 모든 처리가 끝난 후에 텍스트를 클립보드에 복사합니다.text = re.sub(r"\r\n|\r|\n", "\n\n", text).replace("\n\n\n", "\n")
pyperclip.copy(text)
webdriver
1deepl의 번역 사이트를 홈페이지 화면으로 가져가세요.그때는 오류가 발생하기 때문에 예외 처리로 집행한다.
화면이 최소화
driver.maximize_window()
되지 않으면 실행해도 톱 레벨 화면driver.minimize_window()
이 되지 않는다.try:
driver.minimize_window()
driver.maximize_window()
except
pass
2xpath를 사용하여 텍스트 입력 형식을 가져옵니다. 입력한 것은 비어 있습니다.text_area = driver.find_element(By.XPATH, "//*[@id='panelTranslateText']/div[3]/section[1]/div[3]/div[2]/textarea")
text_area.clear()
3개의 입력 형식에 텍스트를 붙여넣고 페이지로 이동합니다.text_area.click()
pyautogui.hotkey("ctrl", "v")
driver.find_element(By.ID, "tabTranslateText").click()
단축키 등록 및 실행
if __name__ == "__main__":
lang = sys.argv[1] if len(sys.argv) == 2 else "ja"
url = f"https://www.deepl.com/{lang}/translator"
driver = webdriver.Chrome()
driver.get(url)
keyboard.add_hotkey("ctrl+q", main)
keyboard.wait("esc")
실행
웹 드라이브와 같은 디렉터리에 스크립트를 "trans.py"로 저장합니다.
명령 프롬프트에서 다음 명령을 입력합니다.
python trans.py ja
등록된 단축키를 누르면 다음과 같다.Reference
이 문제에 관하여(DeepL에서 PDF의 줄 바꿈 없는 번역을 Python으로 수행하는 버전 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/komo/articles/fcae6a44c1a5d2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)