0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Colabで始める日本語OCR「YomiToku」

Posted at

Google Colabで始める日本語OCR「YomiToku」入門

導入(YomiTokuとは?/なぜ使う価値があるのか)

近年、AI技術の進歩により画像から文字を読み取るOCR(光学文字認識)が身近になってきました。**YomiToku(ヨミトク)**は、特に日本語の文書画像解析に特化した新しいOCRライブラリです (YomiToku)。日本語は縦書きや複雑なレイアウト、そして漢字を含む多種多様な文字体系を持つため、従来のOCRでは正確に読み取るのが難しい場合がありました。YomiTokuは独自開発のAIモデルによってこの課題を克服し、高い精度で日本語文書の文字起こしとレイアウト解析を実現します (YomiToku)。例えば、縦書き文章や細かい文字も正確に認識でき、文書内の表や図まで含めて構造的に解析することができます (MLism株式会社、独自AIを搭載し、日本語に特化した文書画像解析エンジン「YomiToku-Pro」をリリース | MLism株式会社のプレスリリース) (MLism株式会社、独自AIを搭載し、日本語に特化した文書画像解析エンジン「YomiToku-Pro」をリリース | MLism株式会社のプレスリリース)。

なぜYomiTokuを使う価値があるのでしょうか?最大の理由は日本語に特化していることによる精度の高さです。開発者が日本語のデータセットで特訓した4種類のAIモデル(文字領域検出・文字認識・レイアウト解析・表構造認識)を搭載しており、日本語文書に対して非常に高精度なOCR処理が可能です (YomiToku)。また、7000文字を超える日本語文字(漢字・かな・記号など)の認識に対応し、手書き文字や縦書き文章など日本語特有のレイアウトもしっかり解析できます (YomiToku)。さらに、解析結果をMarkdownやHTML、JSON、CSVといった便利な形式で出力できる柔軟性も魅力です (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)。個人利用や研究用途であれば無料で自由に使えるため (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)、試してみるハードルも低く、非エンジニアの方でも気軽に扱えます。Google Colab(グーグル・コラボ)上で動作させることで、自分のパソコンに複雑な環境構築をしなくてもブラウザからすぐに利用できるのも大きなメリットです。

※本記事では、専門知識がなくてもコードをそのままコピー&ペーストして実行すればOKな手順を紹介します。PythonやOCRに詳しくない方も安心して進めてくださいね。

できること(日本語OCRの精度・縦書き対応・レイアウト解析の強さ)

YomiTokuが具体的にどんなことをできるのか、主な特徴を見ていきましょう。

  • 日本語OCRの高精度: 日本語文書に特化した4種のAIモデルにより、文章中の文字を高い精度でテキスト化します (YomiToku)。文字数の多い文書や小さな文字がびっしり書かれた資料でもしっかり認識でき、既存のOCRでは読み取りが難しかったケースでも良好な結果が期待できます (MLism株式会社、独自AIを搭載し、日本語に特化した文書画像解析エンジン「YomiToku-Pro」をリリース | MLism株式会社のプレスリリース)。
  • 縦書きや手書き文字の対応: 縦書き文章(小説や新聞など)も問題なく解析できます。また、開発者によれば手書き文字にも対応しており (YomiToku)、読みやすい字で書かれたものであれば自動でテキスト化できる可能性があります(※手書きの場合、活字に比べれば認識精度は下がりますが、対応している点は大きな特徴です)。
  • レイアウト解析の強さ: 文章全体のレイアウト(段組みや段落、見出し)や読み順までAIが解析し、元の紙面構造を崩さずに情報を取り出せます (YomiToku)。例えば、雑誌のように複数段組みの文章でも、正しい順序でテキストを並び替えてくれるので、後で読む際に内容が前後バラバラになる心配がありません。また、文書中に含まれる図や写真、イラストの領域も検出してくれるので、レイアウト全体を把握できます。
  • 表の解析とデータ抽出: 表形式のデータ(例えばスケジュール表や成績表など)が含まれる文書にも強く、セルの結合や境界線の欠如といった複雑な表でも正しく構造を認識して出力できます (MLism株式会社、独自AIを搭載し、日本語に特化した文書画像解析エンジン「YomiToku-Pro」をリリース | MLism株式会社のプレスリリース)。抽出結果はCSV形式で保存できるため、そのまま表データとしてExcelで開いたり集計に使ったりすることも容易です。
  • 多彩な出力形式: 前述の通り、結果は用途に応じてMarkdown・HTML・JSON・CSVのいずれかで取得できます (YomiToku)。MarkdownやHTMLにすれば元のレイアウトに近い形で文章を保存でき、JSONにすればテキストの内容と位置情報を含むデータとして扱えます。図表内の画像も個別のファイルに切り出して保存することが可能で、文章中に埋め込まれた写真やグラフも抽出できます (YomiToku) (MLism株式会社、独自AIを搭載し、日本語に特化した文書画像解析エンジン「YomiToku-Pro」をリリース | MLism株式会社のプレスリリース)。

(image)YomiTokuのレイアウト解析の例を見てみましょう。上の画像はバスの時刻表を撮影した写真をYomiTokuで解析した結果の一部です。紫色やピンク色の枠線が描画されているのがお分かりいただけるでしょうか。これは表の枠や段落など検出された領域を示しており、それぞれの要素(表のセルや文章ブロック)が正確に認識されていることが視覚的に確認できます。また右端には縦書きの注意書き(「土・日曜日・夏休みは運休です」)がありますが、YomiTokuはこの縦書きの文字もしっかり検出しています(画像中の赤い矢印は縦書き部分も含めた読み順を示しています)。このように、YomiTokuは日本語特有の複雑なレイアウトでも高い精度で文字と構造を読み取ることができるのです。

Google Colabで始める準備(環境のセットアップ手順)

では、実際にGoogle Colab上でYomiTokuを使ってみましょう。ここからはステップバイステップで進めていきます。

手順1: Colabノートブックの用意
まずはGoogle Colabを開きます。ブラウザでGoogle Colabのページにアクセスし、Googleアカウントでログインして新しいノートブックを作成しましょう(「+ Code」や「+ 新規ノートブック」ボタンをクリックします)。Colabはクラウド上でJupyterノートブック環境を提供してくれるサービスで、無料でGPU(グラフィックス処理装置)も利用可能です。初期状態ではCPUで動作しますが、OCR処理を高速化するためにGPUを有効化しておくことをおすすめします。メニューの「ランタイム」→「ランタイムのタイプを変更」を開き、ハードウェアアクセラレータとして「GPU」を選択して保存してください。これで、ノートブック上でGPUを使った処理が可能になります(GPUがなくても実行できますが、その場合は処理速度が遅くなります)。

手順2: YomiTokuのインストール
Colabノートブックが準備できたら、YomiTokuライブラリをインストールしましょう。インストールはワンライナーで完了します。新しいコードセルを開き、次のコマンドをコピー&ペーストして実行してください(先頭の!は「シェルコマンド」を実行するための記号です)。

!pip install yomitoku

このコマンドを実行すると、インターネット経由でYomiToku本体と必要な関連ライブラリ(PyTorchというAIモデルを動かすためのライブラリなど)が自動的にダウンロード・インストールされます (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)。インストールには少し時間がかかる場合がありますが、Colab上のメッセージに「Successfully installed ...」と表示されれば準備完了です。特別なエラーが出なければ、そのまま次に進みましょう。

補足: 初回実行時にYomiTokuはOCRモデルのデータをHuggingFaceというオンラインリポジトリからダウンロードします。そのため、インストール直後に最初の解析を実行する際は追加で数百MB程度のモデルファイル取得が自動で行われます。Colab上では自動で処理されますので、数十秒〜数分程度待てば完了します。一度ダウンロードされれば同じ環境では再利用されるのでご安心ください。

PDFをアップロードして実行するステップ

それでは、読み取りたいPDFファイル(または画像ファイル)を用意してYomiTokuでOCR処理を行ってみましょう。

手順1: PDFファイルをアップロードする
解析したいPDFを手元のパソコンからColab環境にアップロードします。Google Colabの左側にある「Files(ファイル)」タブを開き、フォルダアイコンのボタンからファイルブラウザを表示してください (How to Deal With Files in Google Colab: Everything You Need to Know)。次に、上部にあるアップロードボタン(上向き矢印のアイコン)をクリックするか、または表示されているフォルダ名の右側のメニュー(⁝ 三点リーダー)から「Upload」を選択します。ファイル選択ダイアログが表示されたら、目的のPDFファイルを選んでアップロードしましょう。アップロードが完了すると、ファイル一覧に選択したPDFが表示されます。例えばdocument.pdfという名前のファイルをアップした場合、自動的に/content/document.pdfというパスに保存されます(Colab上ではデフォルトの作業ディレクトリが/contentになります)。ファイル名が長かったりスペースを含んでいたりする場合は、右クリックメニューの「Rename」でシンプルな名前に変更しておくと後の作業が楽になります。

手順2: YomiTokuでOCRを実行する
ファイルの準備ができたら、いよいよYomiTokuを使ってOCRを実行します。新しいコードセルを開き、以下のコマンドを貼り付けて実行してください(先ほどアップロードしたPDFファイル名に合わせて、コマンド中のdocument.pdfは適宜読み替えてください)。

!yomitoku /content/document.pdf -f md -o results -v --figure --combine

上記のコマンドを実行すると、YomiTokuがアップロードしたPDFを解析し始めます。少し長いコマンドですが、各オプションの意味は以下のとおりです (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)。

オプション指定は以上です(なお、GPUを使っている環境では自動的にGPUで処理しますが、明示的にデバイス指定したい場合は-d cuda-d cpuのオプションもあります (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)。通常は何も指定しなければGPU->CPUの順で自動選択されます)。

コマンドを実行すると、Colab上のセルにログメッセージが表示されるはずです。初回実行時にはモデルデータの自動ダウンロードが行われ、その後OCR処理が始まります。例えばGPUを使わずCPUで実行した場合、ログには次のようなメッセージが出力されます。

2024-12-03 03:14:56,470 - yomitoku.base - WARNING - CUDA is not available. Use CPU instead.
...
2024-12-03 03:16:19,541 - yomitoku.cli.main - INFO - Output file: results/content_document_p1.md
2024-12-03 03:16:19,541 - yomitoku.cli.main - INFO - Total Processing time: 79.42 sec

上記はQiitaで紹介されていた実行例ですが、約80秒ほどで1ページの画像OCRが完了しています (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)(CPU実行時)。GPUを利用できればこの処理はさらに高速になります。複数ページのPDFの場合、ページ数に応じて時間も線形的に増加しますので、大きなPDFを解析するときは少し待ち時間が必要です。処理が終わるとOutput file: ...と結果ファイルのパスが表示されますので、それを確認しましょう。

出力結果の見方(Markdown, HTML, JSONなど)

YomiTokuの処理が完了すると、指定した出力フォルダ(今回の例ではresults)に解析結果のファイルが生成されています。では、その結果を見てみましょう。

先ほどの例では-f md(Markdown形式)を指定したので、resultsフォルダの中にMarkdownファイル(拡張子.md)が出力されています。ファイル名は自動生成されますが、例えば1ページもののPDFであればcontent_document_p1.mdのような名前になっています(複数ページを--combineで統合した場合はcontent_document.mdのようにまとめて1ファイルに出力されます)。Colabのファイル一覧からその.mdファイルをダブルクリックすると、中身のテキストをプレビューできます。Markdownファイルには、OCRで認識されたすべてのテキストが含まれており、段落や表などはMarkdown記法で表現されています。

例えば、先ほどのバス時刻表の例では、出力されたMarkdownを開くと以下のような内容が含まれていました (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)。

·土·日曜日·夏休みは運休です。

|元 地|      |      |      |      |      |      |      |      |      |
|-|-|-|-|-|-|-|-|-|-|
|      |      |7:17|      |      |9:12|11:22|      |15:45|17:30|
|病院 前|      |7:26|      |      |9:21|11:31|      |15:54|17:39|
|フェリーターミナル着|      |7:27|      |      |9:22|11:32|      |15:55|17:40|
...

上記の例では、「土・日曜日・夏休みは運休です。」という縦書きの注意書きがテキストとして出力され、その下に時刻表の表がMarkdownの表形式(|-を使った書式)で表現されていることがわかります。実際のレイアウトに沿って情報が構造化されているため、見出しや表もテキストベースで再現されています。Markdown形式であれば、人間にも読みやすい形で文章が並んでおり、そのままメモ帳で編集したり他のMarkdown対応エディタで開いたりできます。

他の出力形式について:

  • HTML形式 (-f html): HTMLファイルとして出力します。ブラウザで開けば元のレイアウトに近い形で文章や表を閲覧できます。Markdownと同様にレイアウトを保持しつつ、スタイルが付いた形で結果を確認したい場合に便利です。Colab上で結果のHTMLを直接ダブルクリックすると、生のHTMLソースが表示されますが、PCにダウンロードしてブラウザで開けばレイアウト付きで見られます。
  • JSON形式 (-f json): 認識結果をJSONデータで出力します。各テキスト要素の内容や座標情報、段落構造などが含まれており、プログラムで結果を利用したい場合に適しています。たとえば、JSONを読み込んで特定の項目を抽出したり、独自のフォーマットに再加工するといった応用が可能です。非エンジニアの方であればJSONを直接扱う機会は少ないかもしれませんが、「とりあえずデータを全部取っておいて後で整理したい」というときに役立ちます。
  • CSV形式 (-f csv): 表形式のデータをCSVファイルとして出力します。文書内のテーブル要素をスプレッドシートで扱いたい場合に便利です。例えば請求書や成績表をOCRした場合、テーブルの内容がそのままCSVで取得できればExcelやGoogleスプレッドシートで計算・集計するのも簡単になります。ただし、文章全体をCSVにするとレイアウト構造を表現しづらいため、主に表だけを抽出したいケースで有用でしょう。

可視化画像の確認 (-vオプション): -vを指定していた場合、結果フォルダにはテキストファイルと一緒に画像ファイル(.jpgなど)も出力されています。これはOCR結果をわかりやすく可視化したもので、例えば*_layout.jpgという名前の画像には検出されたレイアウト領域(段落や表の枠)が、*_ocr.jpgという画像には認識した文字領域が描画されています。先ほど埋め込んだ図がその例でした。これらの画像を開くと、元のPDF/画像のどの部分からどんなテキストが抽出されたかを視覚的に確認できます。「ちゃんと正しく読めているかな?」と不安な場合は、この可視化画像を見ることでOCRの結果を検証できます。

ファイルのダウンロード: Colab上で得られた結果ファイル(.mdや.jpg等)を自分のPCに保存したい場合は、Colabのファイルタブからそれぞれのファイルを右クリックして「Download」を選択してください (How to Deal With Files in Google Colab: Everything You Need to Know)。複数ファイルをまとめて取得したい場合はフォルダごとZIP圧縮してダウンロードする方法もありますが、まずは個別に必要なものを保存すればOKでしょう。

以上が出力結果の確認方法です。要約すると、MarkdownやHTMLなら人が読みやすい形式で結果を得られ、JSONやCSVなら機械的なデータ処理に適した形式で結果を利用できるということです。目的に合わせて適切なフォーマットを選び、OCR結果を活用してみてください。

使い道のアイデア(応用例)

YomiTokuで得た日本語OCR機能は、さまざまなシーンで活用できます。ここではいくつかの使い道のアイデアをご紹介します。

  • 古い書籍や資料のデジタル化: 押し入れに眠っている昭和時代の雑誌や縦書きの小説などをスキャンしてテキスト化すれば、検索可能な電子テキストとして蘇らせることができます。YomiTokuは縦書き文書にも対応しているため (YomiToku)、従来は手作業で入力し直すしかなかったような資料も効率的にデジタルアーカイブ化できるでしょう。
  • 表やスケジュールの電子化: 電車やバスの時刻表、学校の時間割、仕事のプロジェクト予定表など、表形式の情報をデータ化したいケースでもYomiTokuは活躍します。表として認識・CSV出力までしてくれるので (MLism株式会社、独自AIを搭載し、日本語に特化した文書画像解析エンジン「YomiToku-Pro」をリリース | MLism株式会社のプレスリリース)、例えばダイヤ改正前後の時刻表を比較したり、スケジュール表を共有カレンダーに取り込んだりといったことも容易になります。
  • 野球のスコアブックのOCR: 部活動や草野球で付けている野球のスコアブックをデジタル化してみるのも面白いでしょう。スコアブックは手書きで記入する項目もありますが、YomiTokuは手書き文字の認識にも対応しています (YomiToku)。綺麗に書かれたスコアであれば試合結果や選手成績を自動で読み取ってくれる可能性があります。そのデータを蓄積すれば、過去の試合の統計を取ったりチームや選手の傾向を分析したりといった活用も考えられます。
  • 名刺や請求書の管理: 紙の名刺や領収書・請求書を大量に管理しなければならない場合にも、OCRは有効です。YomiTokuで日本語の項目をしっかりテキスト化できるので、名刺に書かれた住所録をデータベース化したり、請求書の項目を表計算ソフトに取り込んで経理処理を楽にしたりできます。レイアウト解析により項目ごとに情報を抜き出せるため、「日付」「金額」など必要な情報だけを後で整理することも容易です。

以上のように、YomiTokuは個人の趣味から業務効率化まで幅広く応用可能な日本語OCRツールです。特に日本語文書であれば、高精度に情報を読み取ってくれるので、「こんなものも試せるかな?」と色々チャレンジしてみると新たな発見があるかもしれません。

Q&A形式でのよくある疑問

最後に、YomiTokuに関してよくある質問とその回答をQ&A形式でまとめます。

Q1. 手書きの文字も認識できますか?
A. はい、YomiTokuは手書き文字にも対応しています (YomiToku)。ただし、認識精度は活字より劣る場合があります。比較的整った字であればかなり読んでくれますが、崩れた筆跡や癖の強い文字は誤認識の可能性もあります。まずは試してみて、結果を確認しながら必要に応じて補正すると良いでしょう。「これは無理かな?」と思うような達筆の毛筆体などよりは、ボールペンで丁寧に書かれた文字の方が高い精度で認識できるようです。

Q2. 利用には費用がかかりますか?(商用利用はできますか?)
A. 個人で試す範囲であれば無料で利用できます (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)。YomiToku自体はCC BY-NC 4.0(表示-非商用)ライセンスで公開されており、非商用の個人利用や研究目的での利用は無償です (YomiToku)。商用利用したい場合には開発者に問い合わせて別途ライセンス契約(有償)が必要となります (YomiToku)。つまり、趣味や学習目的でGoogle Colab上で使う分には費用は一切かかりませんのでご安心ください。

Q3. 1ページあたりの処理にどれくらい時間がかかりますか?
A. 処理時間は使用するハードウェアやページ内の情報量によります。例えばCPU環境では1ページあたり数十秒〜1分程度かかる場合があります (Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる #Python - Qiita)。先ほどの実行例ではCPUで約80秒/ページでした。一方、GPUを使用できる環境(Google ColabのGPUランタイムなど)では大幅に高速化され、1ページ数秒〜十数秒程度で処理できることもあります。モデルの初回読み込みや複雑なレイアウト解析があると若干時間は延びますが、GPUを使えば体感的にはかなりスムーズです。大量のページを一度に処理する場合は時間もそれなりにかかりますので、最初は少ないページで試し、必要に応じて分割して処理すると良いでしょう。

Q4. 高性能なPCが必要ですか?(動作環境について)
A. 必ずしも高性能なPCは必要ありません。Google Colabのようなクラウドサービスを使えば、手元にGPUが無くてもクラウド上のGPUで処理できます。YomiToku自体も最適化されており、8GB程度のVRAMを持つGPUであれば十分動作可能とされています (YomiToku)。実際、Colabの無料プランで提供されるGPU(例えばTesla T4など)でも問題なくOCRを実行できます。またGPUがない場合でもCPUで動作しますので、規模が小さければローカルPCだけでも利用は可能です(CPUでは時間はかかりますが…)。メモリに関しては、解析するPDFのサイズにもよりますが数百MB程度のモデルを読み込むので、Colabの標準環境(12GB以上のRAM)で足りています。総じて、環境構築のハードルは低く、特別な機材がなくても大丈夫です。

Q5. 日本語以外の言語も読めますか?
A. 開発者によれば、YomiTokuは基本的に日本語文書向けですが英語の文書にも対応しています (YomiToku)。日本語用に学習されたモデルですがアルファベットの認識も可能です。ただし、英語専用のOCRに比べると学習最適化が日本語寄りであるため、英数字のみの文章の場合は他のOCRと精度が大差ないかもしれません。日本語と英語が混在した資料(例えば英単語が出てくる技術文書など)であれば、YomiToku一つでまとめて認識できるメリットがあります。中国語や韓国語などについては言及がないため対応外と思われますので、基本は日本語+一部英語向けと考えてください。

Q6. プログラミングの知識がなくても本当に使えますか?
A. はい、大丈夫です!この記事で解説したとおりに進めれば、専門的なコードを書く必要は一切ありません。Google Colab上で用意されたコマンドを順番にコピー&ペーストして実行するだけで、OCRの結果が得られます。YomiToku自体はPythonパッケージですが、コマンドラインツールとして使えるようになっており、複雑なプログラミングは不要です。もしColabの操作に不安がある場合も、画面の指示に従ってクリックや入力を行う程度で完了します。実行中にエラーが出た場合もメッセージを読めば原因が表示されますし、ネット上に情報も増えてきていますので落ち着いて対処できます。まずは本記事の手順通りに試してみて、慣れてきたら色々応用してみると良いでしょう。


いかがでしたでしょうか?YomiTokuを使えば、日本語文書のOCRがこれまでよりずっと手軽に、そして高い精度で行えるようになります。非エンジニアの方でも、Google Colabを利用すれば余計なインストール作業なしにすぐ試せるので、ぜひ一度お手持ちのPDFや画像で体験してみてください。日本語ならではの難しさを乗り越えたOCRエンジンの性能に、きっと驚くことでしょう。日々の資料整理や趣味のアーカイブ作業などに役立てていただければ幸いです。では、快適なOCRライフをお楽しみください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?