func.4 objects

進捗しない日記 プログラミングとか

英語のPDFにおいてテキストをコピーした際の改行をどうにかする手法の検討

ABSTRACT

ゼミをサボり通していたためあと4日で8本の英語論文を和訳してまとめて🍤デンスを作る必要が生まれ現実逃避のためこの記事を書いています。
改行を取っ払う方法は色々あるけどクリップボードにある文章の改行をとりあえず全部自動で取っ払ってくれる常駐ツールがあると嬉しいよねという内容です。
10/15追記:exe化したものを置いておきます。
https://1drv.ms/u/s!AhfgzZr64Vl0mZtTQGqley398yYFUQ?e=OcuSHe
Windows以外のPCで論文を書こうとする人の殆どはPythonの環境があると思うのでコードコピペでお願いします。

INTRODUCTION

英語論文を翻訳するとき、まぁもちろん英語がスラスラ読めればそれで良いのですがGoogle翻訳より精度の低い翻訳しかできない身としてはGoogle翻訳を大いに参考にしたいわけです。
Google翻訳はpdfを読み込んで翻訳してくれる機能があるのですが、これ微妙に使い勝手が悪く重いpdfはダメだったり文字の位置がずれたり改行が考慮されなかったりします。従って依然pdfの英語テキストをコピーして翻訳のところに貼っ付ける必要があるわけでして、その時コピーした文章が微妙な感じに改行されると翻訳がちょっと気持ち悪くなって許せないわけです。というわけで本研究ではそれをどうにかする方法を調べた結果をまとめたりやりたいことをやっていきます。

Related Works

簡単な方法はコピーしたテキストをブラウザのURL入力欄にぶち込む方法です。ここは1行に圧縮されるので単に改行が除去されます*1。コピペする手間がちょっと発生しますが特殊なソフトを使わないのが強みでしょうか。

他にソフトやサイトを利用する方法はいくつかあります。例えばこちらではShaperと言う、まさに謎改行を整形するWEB appを公開されています。
dream-exp.hatenablog.com

また、こちらのサイトではJavascriptを用いたツールを公開されています。
www.robotech-note.com

METHOD

これまでの手法は一度コピーした文章を何かしらに貼り付けて整形しコピーするという手順なわけですが、クリップボードを監視してそれっぽい文章がクリップされたら自動で整形してくれる常駐型ソフトだとこの手順をスキップできてちょっとうれしいのでそれを作ります。

Setup

Windowsで作業していて、手元にあったのがpython 3.6.5だったのでこれを使います。
pyperclipというパッケージでクリップボードをいい感じに弄れそうなのでこれをインストールします。

pip install pyperclip

Procedure

適当なファイルを作って以下のコードをコピペして動かします。

import pyperclip, time
clip = pyperclip.paste()
temp = "."
while True:
    time.sleep(0.1)
    clip = pyperclip.paste()
    if clip != temp:
        line = " ".join(clip.splitlines())
#       line = ".\n".join(line.split(". "))
        pyperclip.copy(line)
        temp = line
        clip = line
        print("Removed extra lines")

RESULT

動かしている間は、コピーした文字列の改行を全部取っ払った文字列がクリップボードに上書きされるようになります。また、コメントアウトしている部分を戻すとピリオドに合わせて改行されます。一見便利なようですがAve.やAvg.の省略記号としてのピリオドでも改行する罠に気付き消しています。

DISCUSSION AND CONCLUSIONS

個人的にはそれなりに便利なものができたのですが、この記事とコードを書くのに大体2時間ぐらいかかっていて、このコードを使うことで2時間分英語論文のまとめが効率的になりそうかという微妙な感じがします。まぁやりたいことができたので満足です。