---
# System prepended metadata

title: Untitled

---

## ターゲットとしたユーザー
英語が苦手，または読むのに時間がかかる学生や研究者（当初は自分自身）

## ユーザーの課題
- 学術論文は英語の論文が多く，論文読みがなかなか進まず，本質的な内容を考慮する時間を圧迫する．
- 翻訳サイトで翻訳するにしても，一々論文から文をコピーして翻訳サイトに貼り付けるのは面倒．
    - しかもPDF文書からコピーする時に変なところで改行が入ったり，謎のスペースが入ったりで，うまく翻訳できない．
    
## ユーザーの課題を解決するために実装した機能
- ターミナル上の1コマンドで，
- 指定されたarXivの論文URLまたはローカルのPDFファイルから，論文ファイルのテキストを抽出して，
- 翻訳しやすい形に文章をパースした上で翻訳サイトを通して指定された言語に翻訳し，
- 論文の章や節ごとに階層分けしたmarkdownファイル及びHTMLファイルを生成しブラウザで表示するPythonのCLIアプリケーション機能

## 苦戦した点
Clickによる引数解析
arXiv APIを用いた論文情報取得
・論文の基本情報を取得
・論文PDF取得
大変だったこと
・urlのパース
・クエリの仕様調べ

PDFminerによるPDF文書解析
	・Chapterごとに分ける(subtitle, page, body)
	・翻訳に邪魔な改行や不要なスペース, ページまたぎを適切に処理(正規表現)
	大変だったこと
	・乱雑な正規表現によるパース
	・pdfminerで取得した文書情報の取得の厳しさ
	・何をもってsubtitleを判別するか

DeepL翻訳による文書翻訳
	・seleniumによるwebスクレイピング。入力のテキストエリアと出力のテキストエリアをXpathで取得、値を送信, 取得、および翻訳先言語の変更
	・クエリ送るたびにサーバー負荷削減のためsleep(15)する
	・3000文字ごとに翻訳
	・最初に概要, 導入, 結論を先に翻訳してしまって、表示しておく(smallでの機能ははここまで)
	大変だったこと
	・各要素のXpathを探してアクセスする方法
	・chromedriver周りの環境依存
	・翻訳時間を加味した翻訳出力受け取りのタイミング(翻訳したい文書を入力してからどれくらい待つかの検討)

markdownファイルおよびhtmlの表示
	・解析, 翻訳したChapter情報をもとにmarkdownを作成。
	・htmlに章ごとの目次をつける
	・webbrowserを用いたhtmlの表示
	大変だったこと
	・そもそもどのように翻訳を表示するか構成を迷った
	・MD＞HTMLの変換時に使用するmarkdownパッケージの仕様調べ(英語)

PyPIおよびGitHubへの公開
	大変だったこと
	・setup.pyの記述やMANIFEST.inの記述(特にinclude_package_data=True)
	setup.py
	MANIFEST.in

## 結果
- 1コマンドでPDF論文をある程度の精度で任意の言語に翻訳して読めるようになった．
- 自分の研究室の論文の輪読会などで好まれて使用された．
- Twitterで公表したところ，多くのインプレッションを獲得し，アップデートのリクエストをいただくなどした．
    - https://twitter.com/soraemonpockts/status/1283668697354080258?s=20