画像・PDFから構造化データを抽出!PaddleOCRの導入と活用ガイド


画像・PDFから構造化データを抽出!PaddleOCRの導入と活用ガイド

PaddlePaddle/PaddleOCR

2025-09-19

今回は、PDFや画像からテキストを抽出してAIで活用するのに便利なツール「PaddleOCR」について、その魅力と使い方をたっぷりご紹介します。

PaddleOCRは、PaddlePaddleというAIフレームワークをベースにした、高性能で軽量なOCR(光学文字認識)ツールキットです。OCRとは、画像やPDFファイルから文字を読み取ってテキストデータに変換する技術のこと。

PaddleOCRのすごいところ

高精度
80以上の言語に対応しており、高精度で文字を認識します。

多機能
テキスト認識だけでなく、表の構造を認識したり、キーと値のペアを抽出したりする機能(KIE
Key Information Extraction)も備えています。

軽量
モデルが軽量なので、比較的低スペックな環境でも動かすことができます。

オープンソース
無料で利用でき、商用利用も可能です。

OCRは、様々な業務で活用できます。例えば...

書類の自動処理
請求書や領収書、申込書などの画像から、必要な情報を自動的に抽出してデータベースに登録するシステムを作れます。

PDFからのデータ抽出
PDF形式の報告書や仕様書から、特定の項目を抽出して分析するツールを開発できます。

画像からのテキスト検索
大量の画像の中から、特定のキーワードを含むものを探し出すシステムを構築できます。

PaddleOCRは、これらのタスクを効率的に、しかも高精度で実現するための強力なツールなのです。

まずは環境を整えましょう。Pythonのpipを使って簡単にインストールできます。

Python環境の準備

Python 3.8以上を推奨します。

PaddleOCRのインストール

pip install "paddleocr>=2.6.0.3" -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddlepaddle

中国国内からインストールする場合は、ミラーサイトを使うと高速です。日本など海外からは、--index-urlオプションをつけずにそのままpip install paddleocrで大丈夫です。

次に、具体的な使い方をサンプルコードで見ていきましょう。

まずは、画像ファイルから文字を認識する基本のコードです。

from paddleocr import PaddleOCR, draw_ocr
import cv2
from PIL import Image

# PaddleOCRモデルのロード
# lang='en'で英語、'ch'で中国語、'ja'で日本語など指定可能
# 'ja'はより新しいモデルがあるかもしれませんので、公式サイトで確認してください
ocr = PaddleOCR(use_angle_cls=True, lang='en') 

# 認識させたい画像ファイルを指定
img_path = 'your_image.jpg'

# OCRを実行
result = ocr.ocr(img_path, cls=True)

# 認識結果の表示
for line in result:
    for text_info in line:
        # text_infoは [座標, (テキスト, 信頼度)] の形式
        print(text_info[1][0]) # テキストのみを出力

PDFファイルからテキストを抽出したい場合も、基本的には同じです。

from paddleocr import PaddleOCR
import os

# OCRモデルのロード
ocr = PaddleOCR(use_angle_cls=True, lang='en')

# PDFファイルを指定
pdf_path = 'your_document.pdf'

# OCRを実行
# PDFから直接処理できます
result = ocr.ocr(pdf_path, cls=True)

# 結果の表示
for page in result:
    for line in page:
        print(line[1][0])

PaddleOCRには、表を認識してJSONなどの構造化データとして出力する機能もあります。

from paddleocr import PaddleOCR
import json

# 表認識モデルのロード
ocr = PaddleOCR(use_angle_cls=True, det=False, rec=False, table=True)

# 表を含む画像を処理
img_path = 'table_image.png'
result = ocr.ocr(img_path)

# 結果はJSON形式で取得できます
table_json = result[0]['html']
print(table_json)

出力例

<table><tr><td>Header 1</td><td>Header 2</td></tr><tr><td>Data A</td><td>Data B</td></tr></table>

どの部分が認識されたかを確認するために、元の画像に認識された枠を描画する機能も便利です。

# 認識結果の描画
image = cv2.imread(img_path)
boxes = [line[0] for line in result]
texts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]

im_show = draw_ocr(image, boxes, texts, scores, font_path='simfang.ttf') # フォント指定

# 結果の画像を表示
cv2.imwrite('result.jpg', im_show)

モデルのダウンロード
初回実行時に必要なモデルが自動でダウンロードされます。インターネット接続が必要です。

GPUの活用
もしGPU環境があれば、use_gpu=Trueとすることで、処理速度が大幅に向上します。

日本語モデル
日本語の認識精度を上げるには、lang='ja'を指定します。場合によっては、より新しいモデルや別のモデルを試すことで、精度が改善することがあります。


PaddlePaddle/PaddleOCR




OCRの魔法!Tesseractで画像からテキストを抽出する方法

一言で言うと、Tesseractは画像やPDFから文字を読み取ってテキストデータに変換してくれるオープンソースのツールです。まるで画像に書かれた文字を魔法のように抜き出して、編集可能なテキストにしてくれる、そんな「お値段以上」の働きをしてくれます。


エンジニア必見!数式OCRの決定版「pix2tex」でドキュメント作成を爆速化

今日は特にソフトウェアエンジニアの皆様にとって、「数式を画像からLaTeXコードに変換する」という、ちょっと雲行きが怪しい作業を一気に晴れにする、素晴らしい技術の「pix2tex」をご紹介します!「はぁ~、またこの資料の数式をLaTeXで打ち直しかぁ。積分記号


驚愕のコスパ!エンジニアがUmi-OCRを溺愛する3つの理由

Umi-OCRは、ソフトウェア開発の現場で「こんな機能が欲しかったんだよ!」と叫びたくなるほど便利なツールです。その「激安」っぷりは、単に無料なだけでなく、開発コストや時間を大幅に節約できる点にあります。オフラインで使える 開発中の機密情報や個人情報を扱う場合、外部のAPIに送信するのはセキュリティリスクが高すぎます。Umi-OCRは完全にオフラインで動作するため、安心して利用できます。


Rustで爆速OCR・AI基盤を構築!次世代ベクトル検索エンジン「RuVector」徹底解説

「RuVector」をエンジニア向けに一言で言うなら、「Rustの爆速性能を活かした、学習機能付きのベクトル検索・グラフ解析エンジン」です。OCR(文字認識)やAIと組み合わせて使うことを想定されており、例えるなら「見たものを即座に理解し、関連性を整理して、超高速で引き出せる記憶装置」のような存在です。