ACL 2025発表の「Dolphin」がエンジニアにもたらす変革
おいおい、今日のバーベキュー、最高の肉が手に入ったぜ! あ、〇〇ちゃん、今日もお肉焼くの上手だね!
「いやぁ、そんなことないっすよ。この網の熱を均一にする技術、まるでドキュメントのレイアウトを完璧に読み取るAIみたいじゃないですか!」
え?なんだって?
「いえ、なんでもないです!それより、このドキュメントの話、ちょっと聞いてくれませんか?」
というわけで、僕が今回みんなに紹介したいのは、ACL 2025で発表されたばかりのすごいやつ、その名もbytedance/Dolphinです!
この「イルカ」ちゃん、何がすごいかっていうと、PDFや画像になったドキュメントの構造を、まるで僕らがBBQで肉の塊からスジや脂身を見分けるように、きっちり見分けてくれるんです。
「いやぁ、でもPDFって、ただの電子の紙っぺらでしょ?」
いやいや、それが違うんですよ!ソフトウェアエンジニアは、この「ただの電子の紙っぺら」をデータとして扱いたい場面が山ほどあるんです。
請求書の自動処理
毎月何百枚と届く請求書のPDFから、会社名、金額、日付を自動で抜き出して、経理システムにポンと放り込みたい!
契約書の監査
大量の契約書PDFの中から、特定の条項(例えば「機密保持」とか)が含まれているか、自動でチェックしたい!
論文のデータ抽出
研究開発で、PDFになった学術論文から図表や参考文献をサクッと抜き出して、データベースにまとめたい!
スキャンした書類のデジタル化
紙の書類をスキャンして画像になったものの、どこに何が書かれているか、全くわからん...。これを自動でテキスト化して、検索できるようにしたい!
こういうときに、普通のテキスト抽出ツールだと、レイアウトが崩れたり、表の中身がぐちゃぐちゃになったりして、もう「うわぁぁぁ...」ってなるんですよ。
でも、この「イルカ」ちゃんは、文書のレイアウト(表、リスト、段落、ヘッダー、フッターなど)をしっかり理解してくれるので、意味のあるデータとして綺麗に抽出してくれるんです!
まるで、みんなが手分けして焼いた肉を、誰がどのお皿に、どんな順番で盛り付けたか、全部覚えてくれる優秀な店員さんみたいだと思いませんか?
導入はとっても簡単!Pythonのライブラリとして提供されているので、みんなで協力してBBQの準備をするように、サクッと始められます。
網と炭を用意する(=仮想環境を作る) まずは、他のプロジェクトと混ざらないように、仮想環境を作ってあげましょう。
python -m venv dolphin_env
source dolphin_env/bin/activate # Windowsの場合は dolphin_env\Scripts\activate
お肉と野菜を買いに行く(=Dolphinをインストールする) pipを使って、お肉屋さん(PyPI)からDolphinを連れてきます。
pip install bytedance-Dolphin
これで準備完了!あとは、火を起こして、美味しいお肉を焼くだけです。
ここからは、実際にコードを書いて、PDFからデータを抽出してみましょう。
例
PDFからテキストと構造を抽出する
例えば、こんなPDFがあるとします。
ヘッダーに「報告書」
段落で「2025年9月26日、晴れ、BBQ日和...」
表で「参加者」と「感想」がリストになっている
from dolphin import DolphinParser
# イルカちゃんを呼んでくる!
# モデルは、BBQのベテランシェフを雇うようなものです。
# (実際には、Hugging Face Hubなどからモデルをダウンロードする必要があります。
# 詳細は公式リポジトリを確認してくださいね!)
parser = DolphinParser.from_pretrained("bytedance/Dolphin-v1")
# BBQの材料(=PDFファイル)を準備
pdf_file = "my_report.pdf"
# さあ、焼いてみよう!(=解析を実行!)
results = parser.parse(pdf_file)
# 美味しく焼けたお肉をみんなで分けよう!
# 結果をjson形式で見てみましょう。
import json
print(json.dumps(results, indent=2, ensure_ascii=False))
# どんなデータが取れるかというと...
# こんな感じのデータが取れます(あくまでイメージです)
"""
{
"pages": [
{
"page_number": 1,
"blocks": [
{
"type": "header",
"text": "報告書",
"bbox": [100, 50, 200, 70]
},
{
"type": "paragraph",
"text": "2025年9月26日、晴れ、BBQ日和。今回は、新入社員歓迎BBQを開催しました。...",
"bbox": [100, 100, 700, 200]
},
{
"type": "table",
"columns": ["参加者", "感想"],
"rows": [
["〇〇太郎", "肉が美味しくて最高でした!"],
["△△花子", "野菜も新鮮で嬉しかったです。"],
...
],
"bbox": [100, 250, 700, 400]
}
]
}
]
}
"""
# どうです?ただのテキストではなくて、「ヘッダー」「段落」「テーブル」という構造情報も一緒に取れているでしょう?
# これなら、後続の処理がものすごく楽になります!
### まとめ:BBQの締めくくり
「いやぁ、今日のBBQも、Dolphinのおかげで最高だったぜ!」
...いやいや、Dolphinは関係ないですから!でも、このDolphin、PDFや画像からデータを扱うことが多い僕たちソフトウェアエンジニアにとっては、本当に革命的なツールになるはずです。
みんなもぜひ、公式リポジトリをチェックして、あなたのプロジェクトにこの「賢いイルカ」を招き入れてみてください!きっと、面倒なドキュメント処理が、BBQのように楽しくなるはずですよ!
それでは、お肉が焦げる前に、今日はこの辺で!また次回!