Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Linux: Convert a png file into a pdf file using tesseract

2025年09月18日に「Dev.to」が公開したITニュース「Linux: Convert a png file into a pdf file using tesseract」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

LinuxでPNG画像をPDFファイルに変換する方法を解説。OCRエンジンtesseractで画像からテキストを抽出し、pandocでテキストからPDFを生成する。これらのツールのインストール方法や、Bashスクリプトによる具体的な変換手順を紹介し、画像内の情報を活用する一連の流れを学ぶことができる。

ITニュース解説

この解説では、Linux環境でPNG形式の画像ファイルをPDFファイルに変換する技術的なプロセスについて、システムエンジニアを目指す初心者が理解できるように詳しく説明する。画像データから文字情報を抽出し、それを整形してPDFに変換するという一連の作業は、デジタルドキュメントの管理や情報活用において非常に基本的ながらも重要なスキルである。

まず、この変換作業の核となる二つの主要なツール、TesseractとPandocについて解説する。Tesseractは、画像に含まれる文字を認識し、デジタルテキストとして抽出する「光学文字認識(OCR)」エンジンである。これは、スキャンした書類や写真の中にある文字をコンピュータが読み取り、編集可能なテキストデータに変換する技術のことだ。Tesseractは、1980年代からHP社で開発が始まり、その高い認識精度で注目された。2005年にはオープンソースソフトウェアとして公開され、現在では世界中の開発者コミュニティによって活発に改良が続けられており、誰でも無料で利用できる強力なツールとなっている。このTesseractが、PNG画像からテキスト情報を抜き出す最初の重要なステップを担当する。

次に登場するPandocは、多種多様なドキュメント形式を相互に変換できる汎用性の高いツールである。例えば、Markdown形式で書かれたテキストをHTMLやDOCX、さらにはPDFへと変換するといった応用が可能だ。今回の文脈では、Tesseractが画像から抽出した生テキストデータを受け取り、それを構造化されたPDF形式のファイルに変換する役割を果たす。PandocでPDFを生成するには、通常、追加のコンポーネントのインストールが必要となる。具体的には、「pandoc-pdf」や「weasyprint」、そして「TeXLive」といったパッケージが挙げられる。これらは、テキストや図表をプロフェッショナルな品質でPDFとして組版するための基盤となるツール群であり、Pandocがこれらを利用して最終的なPDFを作成する。

これらのツールをLinuxシステムで利用するためには、まず適切なインストールが必要である。記事では、which tesseractwhich pandocというコマンドを使用して、それぞれのツールがすでにコンピュータにインストールされているかどうかを確認する方法が示されている。whichコマンドは、指定されたコマンドがシステム内のどの場所に存在するかを示すことで、インストールの有無を間接的に確認できる。もしツールがインストールされていない場合、記事ではFedoraというLinuxディストリビューションを例に、sudo dnf install tesseract pandocというコマンドによるインストール方法を説明している。sudoは、管理者権限でコマンドを実行するために必要であり、dnfはFedoraにおける標準的なパッケージマネージャーである。パッケージマネージャーは、インターネット上にある「リポジトリ」と呼ばれるソフトウェアの保管場所から、必要なプログラムを自動的に検索し、ダウンロードしてシステムにインストールしてくれる便利な仕組みだ。記事ではさらに、fedora-updates.repoというファイルを通じて、システムが最新のソフトウェアを提供するためのリポジトリにアクセスできる状態にあるかを確認する手順も紹介されている。

今回のPNGファイルは、一般的にスクリーンショットツールによって作成されることが想定されている。記事では、GNOMEデスクトップ環境で広く使われているgnome-screenshotというツールを例に挙げている。gnome-screenshotは、コンピュータの画面の一部または全体を画像としてキャプチャし、PNG形式などで保存する機能を提供する。このスクリーンショット画像が、Tesseractによる文字認識の入力データとなる。

それでは、具体的なシェルスクリプトの動作について見ていこう。シェルスクリプトは、一連のコマンドを記述し、自動的に実行させるための小さなプログラムである。スクリプトの最初の行にある#!/bin/bashは、このスクリプトがbashシェルというコマンドインタープリタで実行されることをシステムに伝える。 スクリプトが開始されると、まずclearコマンドで画面が初期化され、echo "Welcome to extract from a screenshot to pdf"という歓迎メッセージが表示される。その後、echo -n "Add the path and the file name "というメッセージが続き、read pfadによってユーザーは画像ファイルが格納されているディレクトリのパスを入力するよう促される。入力されたパスが実際に存在するかどうかは、if [ -d "$pfad" ]; thenという条件文で確認される。もし指定されたパスが存在しない場合、スクリプトはエラーメッセージを表示し、exit 1コマンドで終了する。

ディレクトリが正しく確認されると、cd $pfadコマンドでそのディレクトリに移動する。次に、echo -n "Add the file name "というメッセージが表示され、read filenameでユーザーはPNG画像ファイルの具体的なファイル名を入力する。このファイル名もif [ -f "$filename" ]; thenでその存在が確認される。 最後に、echo -n "What is the name of the output file? "という問いに対して、read outputでユーザーは作成するPDFファイルのファイル名を入力する。

そして、このスクリプトの中心的な処理がここから実行される。 tesseract -l deu $filename stdout | xargs > 12.txt このコマンドは、ユーザーが指定したPNG画像ファイル($filename)をTesseractで処理する。-l deuというオプションは、画像内のテキストがドイツ語("deu"はGermanの略)であることをTesseractに明示し、これによりTesseractはドイツ語の文字をより正確に認識しようと試みる。Tesseractが画像から認識したテキストは通常、標準出力(stdout)と呼ばれる場所に出力されるが、その出力を|(パイプ)を使って次のxargsコマンドに渡している。xargsは、前のコマンドの出力を次のコマンドの引数として渡す役割を持つが、ここでは標準出力をそのまま受け取り、それを>(リダイレクト)を使って12.txtという名前の一時ファイルに書き込んでいる。この一行のコマンドにより、画像からテキストが抽出され、そのテキストデータが12.txtファイルに保存されることになる。

テキストが一時ファイルに保存された後、次のコマンドでPDFへの変換が行われる。 pandoc 12.txt -o $output.pdf このコマンドは、先ほどTesseractが作成したテキストファイル12.txtをPandocの入力として指定し、-o $output.pdfオプションによって、ユーザーが事前に指定した名前($output変数)でPDFファイルを出力するように指示する。これにより、抽出されたテキストがPandocによって適切に整形され、最終的なPDFファイルとして生成される。

最後に、rm 12.txtというコマンドが実行され、作業中に一時的に作成された12.txtファイルが削除される。これは、不要なファイルをシステムに残さないための、良い習慣に基づくクリーンアップ作業である。

この一連のプロセスは、Linux環境において、複数の専門ツールを組み合わせ、コマンドラインとシェルスクリプトを活用して特定の課題(PNGからテキストを抽出しPDFにする)を自動的に解決する典型的な例である。システムエンジニアを目指す初心者にとって、TesseractやPandocのような強力なオープンソースツールがどのように機能し、それらを連携させることでどのような具体的な問題解決が可能になるかを学ぶ良い機会となる。コマンドライン操作は最初は複雑に感じるかもしれないが、このように一つ一つのコマンドの意味と役割を理解し、それらを組み合わせることで、非常に柔軟で強力な処理を自分の手で実現できるようになる。これは、日々の作業効率を向上させるだけでなく、より複雑なシステム開発や運用における基盤となる重要なスキルである。

関連コンテンツ

関連IT用語