汎用性の高い形にできたら、改めて公開したい。, 勉強がてら、tkinterを使ってGUIも作成してみた。 Pythonは、豊富なライブラリを扱えることからデータ解析の分野で人気があります。 今回はPythonで複数のライブラリを使用し、英語論文のPDFファイルからテキストを抽出後に翻訳してWordファイルに自動で出力するコードを作成しま[…] Pythonを使ってある程度自動化できないか・・・と考えて調査したところ、簡単に実装できたのでまとめておく。, pythonを使ってdocxファイルを取り扱うために、python-docxというライブラリが公開されているので、まずはこれを導入する。 目次(項目クリックでジャンプできます) 1 PDF自動作成における最大のメリット. 画像から文字起こしができると、業務効率化など様々な場面に応用できて便利です。 このような方もいるかと思いますが、 実はWord(ワード)にはフリーソフトを使わなくても、PDFファイルをWord(ワード)に変換する機能 が標準で用意されています。 そこで今回は、 フリーソフトを使わずに簡単に PDF を Word(ワード)に変換する方法をお伝えしていきます。 0, 回答 幸いなことに、それを可能にするオープンツールがあります。しか …, 【Python】pdfファイルから文字起こしをしてテキストに変換する方法(tesseract-OCR、pyocr、pdf2image、poppler). Pythonは、豊富なライブラリを扱えることからデータ解析の分野で人気があります。, 今回はPythonで複数のライブラリを使用し、英語論文のPDFファイルからテキストを抽出後に翻訳してWordファイルに自動で出力するコードを作成しました。, Pythonを入れてなくても使えるEXEファイルも作ってみました → ダウンロード, ソースコードは以下の通りです。6行目に翻訳したい英語論文のファイル名を入れて実行すると、自動的に英語論文が翻訳されてWordで出力されます。, さらに、このソースコードの内容について、どのようなプロセス処理を行っているかを細かく分けて解説していきます。, Pythonのインストール方法はこちらPythonのインストールと開発環境(PyCharm)の導入方法を解説, 「PyPDF2」はPDF操作、「googletrans」はGoogle翻訳、「docx」はWordの操作を行います。, コマンドプロンプトで「pip install PyPDF2」、「pip install googletrans」、「pip install python-docx」と入力してそれぞれインストールします。, PyPDF2モジュールを使ってPDFファイルの読み込みを行います。「PyPDF2.PdfFileReader(“任意のファイル名.pdf”)」でPDFを読み込んで「reader」に格納しています。「reader」の中身がどうなっているかというと、, print(reader) の実行結果, 読み込んだPDFファイルを識別するidのようなものです。これを用いてPDFファイルから色々な情報を引き出していきます。, 「getPage(任意の数字)」は「reader」から任意のページの情報を引き出します。, print(reader.getPage(0)) の実行結果{‘/Type’: ‘/Page’, ‘/Parent’: IndirectObject(2, 0), ‘/Resources’: {‘/Font’: {‘/F1’: IndirectObject(5, 0), ‘/F2’: IndirectObject(7, 0), ‘/F3’: IndirectObject(9, 0), ‘/F4’: IndirectObject(11, 0)}, ‘/ProcSet’: [‘/PDF’, ‘/Text’, ‘/ImageB’, ‘/ImageC’, ‘/ImageI’]}, ‘/MediaBox’: [0, 0, 595.2, 841.92], ‘/Contents’: IndirectObject(4, 0), ‘/Group’: {‘/Type’: ‘/Group’, ‘/S’: ‘/Transparency’, ‘/CS’: ‘/DeviceRGB’}, ‘/Tabs’: ‘/S’, ‘/StructParents’: 0}, ここから「extractText()」でPDFファイル内のテキストを取得することができます。「reader.getPage(0).extractText()」のように書くと、1ページ目のテキストを読み取れるということです。これで全ページのテキストを読み取るために、for文で繰り返し行います。, for文で最後のページまで繰り返すために、「getNumPages()」でPDFの総ページ数を取得しています。これで1ページごとに読み込んだテキストを「text」に次々に足していけば、PDFからの全テキスト読み取りが完了です。, ここでは、1度読み取ったテキストを「.txt」で出力します。出力の際にはそのままだとエラーが出るので、文字コードを「utf-8」にエンコードしています。, 英語論文のほとんどは、テキストに変換しても改行の位置がおかしかったり、ピリオドが図の説明で「Fig.」みたいになっている場合が多いです。そのため、Google翻訳の時に誤訳したり、単純に読みづらかったりと色々問題があります。, 先ほど出力した「pdf_text.txt」を開き、後の書き込み用に「covert_text.txt」を新たに開いています。, 「for line in pdf_text:」のように書くことで、「pdf_text」に対して1行ずつfor文の処理を実行することが出来ます。これと「replace」を使って、文字の置換でテキストの整形をしていきます。, 「pdf_text = line.replace(“\n”, “”)」では、改行コードである「\n」を無に置き換えてテキスト内の改行を全て消しています。これをしないと、例えば「article」が改行によって「art」と「icle」の2つに分かれていて、Google翻訳にかけても意味わからない日本語訳になったりします。, 次の「pdf_text = pdf_text.replace(“fig.”, “fig”).replace(“Fig.”, “Fig”)」で、図の説明に使う「fig.」や「Fig.」のピリオドを取り除きます。翻訳の時に邪魔なので。, 「pdf_text = pdf_text.replace(“.”, “.\n”)」は、ピリオドを「.\n」に置換することで文の終わりで改行するようにしています。, 英語論文の内容によっては、ピリオドの後に半角スペースを入れることで「6.5」のように文末以外でピリオドが入っているところをある程度無視できます。ただし、文末のピリオドの後に半角スペースを使っている場合に限ります。, 「pdf_text = pdf_text.replace(emp*i, ” “)」では余分な半角スペースを取り除きます。論文によっては英単語の間に2個以上半角スペースが入っている部分があることも少なくないので、見た目をきれいにするために入れました。, for文で7連続までの半角スペースは除去するようにしていますが、たまに消えないところがあります。とはいえGoogle翻訳にほぼ影響はないので消さなくても特に問題はないです。, 最後に「.txt」で出力します。これで文章がきれいな形になっているのが確認できます。, テキストの整形も済み準備が完了したので、いよいよ翻訳します。Google翻訳はウェブサービスなので操作が面倒かと思いきや、専用のライブラリがあるので簡単です。, 例のごとくテキストを読み込みます。今度は、先ほどテキスト整形を行い出力した「convert_text.txt」です。, 翻訳はgoogletransを使って「Translator().translate(“任意の文字列”, src=”翻訳元の言語”, dest=”翻訳先の言語”)」のように書くことでできます。言語入力は、「en」で英語、「ja」で日本語です。例としてdogを翻訳すると、以下のようになります。, print(Translator().translate(“dog”, src=”en”, dest=”ja”)) の出力結果Translated(src=en, dest=ja, text=犬, pronunciation=Inu, extra_data=”{‘translat…”), そのままだとテキスト以外の情報も入っているので、「Translator().translate(line, dest=”ja”).text」で翻訳結果のテキストだけを取り出します。, Google翻訳は一度に処理できる文字数が5000なので、それ以内に収まるように文章を取り出して翻訳しないといけません。そのため、一回で翻訳が終わらない場合は複数回に分けて翻訳します。, まず、「transtext」に「readline()」で1行ずつ文章を追加していき、「len()」で文字数を計算して4000文字以上になったらまとめて翻訳を行います。翻訳が完了したら「translated_text」に翻訳済みの文章を追加し、「transtext」の中身をリセットして繰り返します。, ここでは翻訳が終わった直後に3秒間停止するようにsleep()を入れています。Google翻訳に高速でリクエストを送ると、負荷がかかって迷惑になる可能性があるので、処理ごとに時間を空けるようにしておきましょう。, 「docx.Document()」で新規のWordファイルを開いた後、「add_paragraph(“任意の文字列”)」で文字を入力します。操作をしたWordファイルは、「save(“任意の文字列”)」で保存することができます。Wordファイルの操作は以上です。, 最後に、os.remove(“ファイル名”)で、Wordで翻訳したテキストを出力するまでのプロセスで出力したテキストファイルを削除します。, 一応翻訳機能の実装は出来たものの、論文のフォーマットが一律じゃないのでうまくテキストを整形するのが難しいです。タイトルやページ、参考文献、表がうまく操作できない他、そもそもPDFで読み込んだ時点で単語と単語の間に半角スペースがなかったりと色々不具合が多いです。(半角スペースがない件はGoogle翻訳がなんとかしてくれますが), とはいえ翻訳作業自体はそれなりに楽できそうなので、ひとまず安心です。ソースコードの方はこれから少しずつブラッシュアップしていこうと思います。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。. 自動的にPDFのファイルのテキストをコピーしてエクセルに貼り付けるには、どのようなプログラムが良いで... Djangoを用いたWebアプリケーション開発でのWordファイルからpdfファイルへの変換方法, PyPDF2でpdfファイルに書き込む際にUnicodeEncodeErrorが発生してしまう, 回答 PDFのページ抜粋、結合、重ね合わせのようなPDFのページ操作ならば、PythonでPyPDF2を利用すれば簡単にプログラミングできます。弊社の通信講座でもサンプルを使って実習しています。. 2)複数のページ数をもつpdfファイルに対応できるようにする, 2)→pdfファイルを画像ファイルに変換するとページごとに画像ファイルが生成されるため、for文でpdfのページごとに画像ファイル変換。そこから文字起こしたテキストをtextsリストに追加。最後に、textsリストに含まれるテキスト毎に文字スペース削減、改行削減を行い、printで表示。, 言語を指定を変更し(lang_num=0)、reを使った正規表現処理のコードを削除すればOKです。, 【Python】画像から文字起こししてテキストに変換する方法(tesseract-OCR、pyocr). 有料のAdobe Acrobatであれば、テキスト認識できるpdfファイルを作ることができます。しかしながら、大半のpdfファイルはテキスト認識できない完全埋め込み型だと思います。, こちらの記事にて、画像ファイルから文字起こしする方法を書きましたが、pdfファイルについても同じことができないのでしょうか?, tesseract-OCRでは、pdfファイルからテキストに文字起こしすることはできません。, pdfファイルの場合、プリントスクリーンで表示画面をキャプチャ→ペイントに貼る→画像ファイルとして保存、という手もありますが、pdfのページがたくさんあると面倒です。, やるなら、pdfファイルを一旦画像ファイルに変換してからtesseract-OCRの処理にかけます。, こちらのURLにアクセスし、DownloadのところのLatest binaryに記載されているpopplerをクリックすればOKです。, 2019年7月時点ですと、poppler-0.68.0_x86がLatest binaryに記載されていますのでこれをクリックします。 1.1 帳票作成の自動化で業務生産性向上が出来る. hawk 2020-08-04 / 2020-08-04. Pythonは、豊富なライブラリを扱えることからデータ解析の分野で人気があります。 今回はPythonで複数のライブラリを使用し、英語論文のPDFファイルからテキストを抽出後に翻訳してWordファイルに自動で出力するコードを作成しま[…] 画像認識が強いpyhonなら可能かな、と思いまして質問させていただきました。, 画像処理での光学文字認識(OCR)という技術がございます.

赤葦 ホラー Pixiv 8, 生え際 毛 細い 29, モルタル 1m3 セメント量 4, ビジュー 配置 コツ 5, Hiroji Miyamoto Rar 27, Pandas Plot Marker 4, 荒野行動 ルーム 掲示板 8, Vxm 197vfni 取付 9, 服部平次 年齢 バイク 9, L 01l リカバリーモード 20, サティス Eco4 Eco5 違い 20, Tz Hdw611p 取扱説明書 6, 天気 悪い 不眠 4, セキスイハイム 室内ドア 交換 11, プロパン ガス 50kg M3 4, Dunk It 意味 13, 26歳 焦り 人生 14, 看護目標 評価 書き方 8, 犬 レインコート 簡単 6, 玄関ドア 構造 名称 59, ティックトック 顔追跡機能 スタンプ 8, Jlpt N2 Grammar 4, レッツノート 電源 落ちる 6, 動画 フレーム数 計算 12, M2ts Bdmv 変換 43, テント ロープ カラビナ 10, Kz E10 レビュー 5, Pubg 敵の位置 チート 6, 犬 嗅覚 臭い 5, ノブ ゴチ 強い 12, アミューズ 社長 死亡 26, ヨアソビ M ステ 39, ベンツ Sクラス 車検費用 6, ミヤマクワガタ カワラ 菌糸 6, G ショック 説明書 41, ハムスター 水槽 夏 9, 炭酸水 冷蔵庫 凍る 4, 2020年 射手座 宝くじ 17, 浜学園 入塾テスト Vクラス 4, 子宮体癌 検査後 注意 22, ゆな たこ 高校 どこ 6, Nv350 ガソリン パワーアップ 4, Sharepoint Javascript 列 取得 5, 三白眼 カラコン ずれる 12, 40代 猫っ毛 髪型 12, Angular Material Vertical Splitter 5, React Table レスポンシブ 5, 広島 田舎 なんj 4, レクサス Ux 安い 4, 岩国 火事 爆サイ 15, アルト Ags 2速発進 6, 高校化学 教科書 目次 6, 真 女神転生3 ギリメカラ 16, ドラクエ 小説 おすすめ 4, レオパレス 1k 赤ちゃん 4, 胃カメラ 生検 悪性 確率 40, 靴 かかと 脱げる スニーカー 6, 男性 精神年齢 実年齢 8, 好かれてる サイン 職場 5, かくしごと 10話 あにこ 13, 今田美桜 Cm ユニクロ 12, 大学 選択科目 何 個 6, ガンプラ つや消し 関節 11, スヌーピー マスク 在庫あり 5, ポケモン 努力値 表 5, Body Browser 日本語 5, Timetree Googleカレンダー 色 5, 山下健二郎 Diy 本棚 32, 東工大 編入 過去問 解答 4, Pdf エクセル 変換ソフト 比較 4, スプラトゥーン2 サーモンラン 評価リセット 13, 賀来賢人 嫁 子供 6, ザイザル ジェネリック いつから 5, いきまり たける 嫌い 5, 刑事 彼氏 別れ 7, サンヨー洗濯機 分解 図 4, Esxi Cim サーバ 起動 しない 4, リーバイス ダブルエックス 意味 4, Gta5 銃器密造 ソロ 8, 海外fx 国内fx 税金 合算 8,

Write a comment