2022/12/16

【Python】画像のみの固定レイアウトのePubをPDFに変換する

だいぶ前から漫画などの固定レイアウトEpubを目次付きPDFに変換するプログラムをPythonで作りたい、ということで色々と検討してきました。 前回と前々回の記事で紹介した内容になりますが、PythonのライブラリのEbookLibとimg2pdfが使い勝手が良さそうだということがわかりました。

そこで本記事では、流行りの「ChatGPT」に、プログラムを作成してもらいました。
「画像のみの固定レイアウトepubを、PDFに変換するプログラムをPythonのebooklibとimg2pdfを使って作成してください」とチャットに送信した結果、以下の動画のようになりました。実際には、複数回実行して、ある程度欲しい結果になるまで繰り返し実行しています。



ChatGPTに何回か出力させたプログラムを組み合わせて、さらに足りてない部分などを加えて、修正したものが以下になります。


かなり実行速度が速く、体感的には一瞬で変換してくれました。まだ、目次の移植や右綴じへの変換などは出来ていないので、追々検討しようと思います。

ChatGPTが、吐き出したプログラムが実際には動かないプログラムというケースもありますが、今回の事例では良い精度で実行したい内容を動くプログラムにしてくれたので驚いています。 今後は、知りたいことを検索エンジンで似たようなことをやっている記事を探すのではなく、チャットで正解例を教わるような時代になるのでしょうか?
今後の進展が気になります。

追記:2022/12/18
pikepdfで右綴じにする部分を追加しました。

追記:2023/01/09
ePubからの目次を移植する部分を追加しました。
追追記:2023/02/24
Ebooklibを使わずに、BeautifulSoupを使うバージョンを作成しました。
コマンドライン実行を想定していて、綴じ方なども指定できるように変更しました。


今後は、逆に画像のみのPDFから固定レイアウトのePubへの変換プログラム作成に取り組みたいと思います。

2022/11/22

【Python】DEMデータをvtkに変換して、ParaViewで表示する

ParaViewは、2次元・3次元データの可視化のためのオープンソースソフトウェアです。可視化機能が強力でフリーで使えるため人気があります。
Pythonの可視化ライブラリには、matplotlibやplotlyなどがありますが、基本的には2次元までデータの可視化向きで、3次元データの可視化にはParaViewを使った方が動作も軽いです。

本記事では、以前の記事と同様に、国土地理院の基盤地図情報(数値標高モデル)のDEMデータから変換したGeoTIFFを用いました。DEMデータの結合方法やGDALの導入については、本記事でも割愛します。
また今回は、3次元表示に当たり軸の単位が揃っていた方が都合が良いため、GeoTIFFへの変換時にUTM座標に変換したデータを用いました。

実行環境:MacBook Air(M2、2022、メモリ:16GB)

ParaViewでは、GeoTIFF形式のDEMデータも読み込めるようですが、下記の例では、DEMデータの指定範囲での切り出しや解像度変更、vtk(Visualization Toolkit)形式への変換を試しました。

スクリプト例:

出力例:Scaleの設定からZ軸方向を10倍に強調
参考:

また、以下のようにカラーマップを作成すると好きなカラーマップを追加できます。

スクリプト例:前回の記事と同様にwiki-schwarzwald-contを設定

出力例:
関連記事

2022/08/08

【Python】PDF内の表をExcelに変換する

本記事のタイトルの内容で検索して出てくるのは、tabula-pyを使用した例が多いです。tabula-pyは、Javaのライブラリのラッパーであるため、Javaのインストールや設定が必要とのことで、どうにかtabula-pyを使わずにやる方法がないか検討しました。

そこで思いついたのが、以前紹介したwin32comを使用する方法です。win32comを使うことで、Microsoft Officeを操作できるため、Pythonから下記の動作を実行することができます。
  1. PDFファイルをWordで開く
  2. 表を選択してコピー
  3. Excelに貼り付け、名前をつけて保存
これで、PDF内の表をExcelファイルに変換する作業の自動化が可能です。xlsxにした後は、Pandasで読み込むなど自由に操作可能です。


注意 : 使用できる環境等に条件があります。
  • win32comを使用するため、WindowsにMicrosoft Officeがインストールされている環境であること
  • PDFファイルの「セキュリティ設定」でコピーが禁止されていないこと
参考:

2022/06/19

calibreで出力したepubをKindleGenで処理できるように再変換する

以前の記事でKindleGenなどの使い方を紹介しましたが、Kindleもepub対応するとニュースになっていました。メール転送でepubが使えるようになるだけみたいなので、個人的にはもうしばらくはKindleGenも使って行きたいと思っています。

電子書籍管理ソフトウェアの「Calibre」で変換したepubが、KindleGenで変換できないケースがあります。Calibreでmobiなりazw3なりに変換すれば良いのでしょうが、設定が正しくないためか、レイアウトが崩れ表示が壊れるケースに見舞われたので、Pythonで変換スクリプトを書きました。

と言っても、画像中の左のファイル構成になっているものを、右のファイル構成に変換するのが主な処理です。万能なコードではなく、KindleGenが上手く処理できない一部のケースのみに対応しているので、ご留意ください。

日本語の縦書き書籍(漫画などではない)を想定しており、スタイルシートは、「電書協 EPUB 3 制作ガイド ver.1.1.3 2015年1月1日版」から一部のファイルをコピーして使用しています。事前にダウンロードして解凍して同一階層に必要なファイルを置いてください。


バグ等もあるかと思いますので、参考程度にご利用いただけると幸いです。

関連記事

2022/03/20

【Python】foliumで複数の地図タイルを切り替えて表示する方法

以前、「【Python】foliumで地質図を表示する方法」という記事を書きましたが、実用していく上で、地図タイルを切り替えられると便利だなと思い当たりました。

本記事では、複数の地図タイルを切り替えて表示する方法を紹介します。

以前の記事で紹介した地理院地図のタイルとシームレス地質図のタイルを例として、地図タイルの切り替えを行います。

出力結果


関連記事