本動画は、IBMの開発者向けポッドキャスト「The Flow」第7エピソードであり、IBMの上級研究員でDockling.aiのコアコミッターであるMikuel Aduliを招いてDockling について解説している。DocklingはPDFや音声ファイルなどの文書を処理し、AIアプリケーション向けにデータを抽出・変換するオープンソースツールである。2024年7月にオープンソース化され、現在GitHubで約16,000のスターを獲得している。文書内のテーブル、画像、数式、コードなどの要素を適切に識別・抽出し、構造化されたデータとして出力できる点が特徴で、RAG(Retrieval-Augmented Generation)システムでの活用やMCP(Model Context Protocol)サーバーとしての機能も提供している。

Docklingを特集したThe Flow第7エピソード
こんにちは皆さん、The Flowのエpisodeへようこそ。私は開発者関係エンジニアのDavid Jonesardyです。いつものように共同ホストのCarter Robbasaと一緒にお届けします。
こんにちはCarter。皆さん、元気ですか。お会いできて良かったです。Davidに聞きたいのですが、これって8回目か9回目のThe Flowでしたっけ。そんなに多くはないですね。7回目だと思います。
そうですね。第7エpisodeです。二桁に到達するのが楽しみです。そうなれば、どのエpisodeか気にしなくて済みますからね。皆さんにお会いできて嬉しいです。Davidが言ったように、私の名前はCarter Basaです。IBMの開発者関係チームで彼と一緒に働いています。
今日のゲストにとても興奮しています。このポッドキャストは、AIで構築するために必要なことについて会話を交わし、コードに飛び込むものです。今日はIBMの上級研究員でdockling.aiのコアコミッターでもあるMikuel Aduliさんにお越しいただいています。
もちろんDocklingが何かについて詳しく説明しますが、AIには「データなくしてAIなし」という決まり文句があります。これが今日のポッドキャストのトピックになります。Docklingは開発者がアプリケーションを構築する際にデータを取り込むために使用する、本当に興味深いツールです。
Docklingとは何か、どう違うのか、どのように動作するのかについて詳しく説明しますが、まずはMikuelさんにお話しいただきたいと思います。参加してくださって本当にありがとうございます。特に、そちらの時間を考えると。今は何時ですか?
今は午後8時頃です。まだ大丈夫です。心配しないでください。番組に参加できて私としても大変光栄です。今日何を見つけられるか楽しみです。
これは素晴らしくなりそうです。私たちは今タイムゾーンを跨いでいますね。ここシアトルの太平洋岸では午前11時です。Davidはオーランドで午後2時でしたっけ?
そうです。午後2時です。
素晴らしい。そしてMcklli(Mikuelのニックネーム)はスイスにいて、そこでは夕食を終えて、これから私たちと一緒に過ごしてくれます。私はコーヒーを飲んでいます。Mcklliさんはビールを飲んでいるかわかりませんが、飲んでいるなら後でどうぞ。
後で必要なものは全て用意してあります。今すぐ持ってきてもいいですよ。これをとても楽しく興味深いエpisodeにできます。
面白いことに、実際に私が聞いているポッドキャストがあって、そこではウイスキーを飲むんです。基本的にBallmer Peakについてなんです。
その通りです。時間が経つにつれて、ポッドキャストの終わりには皆少し酔っぱらってるんです。視聴・視聴している皆さんで、Ballmer Peakが何かわからない方には、後で説明します。でも素晴らしい。
Mcklliさん、参加してくださって本当に嬉しいです。すべてのゲストに最初に聞くことがあります。会話のレベルを合わせて、人を知るためのいい方法だと思います。プログラムを実際に書いたり、コーディングをした最初の記憶は何ですか?
かなり前まで遡らないといけませんね。少し考えてみます。基本的には99年か2000年頃だと思います。それが始まった頃で、2つの別々のことをしていた記憶がありますが、より積極的に取り組んでいたのは、実際にorienteeringクラブに深く関わっていたことです。
これは実際には誰も知らないスポーツですが、それは後で話すとして、クラブウェブサイトを運営するなど、いくつかの責任を引き受けることになりました。それが単純に登録を管理する必要がある状況になり、データベースといったものが存在することを知るようになりました。それが完全に独学で始める方法でした。本当にコースに従うわけでもなく、高校よりもずっと前で、それについての本当のカリキュラムもありませんでした。それが私が始めた唯一の方法でした。
残念ながら、最初はPHPでした。
ちょっと待って、それについて謝る必要があるなんて信じられません。PHPは、面白いことに、Mcklliさんがこれを知っているかわかりませんが、冗談抜きで、PHPは大きなカムバックを果たしています。本当に大きなカムバックをしています。Laravelという非常に人気のあるPHPフレームワークがあります。
それは本当にすごいです。正直、なぜなのか理解していませんが、人々との会話やソーシャルメディアへの注意からわかるのは、Laravelが大きなカムバックをしていることです。私はWebAssemblyで多くの興味深い作業をしている人々に気づき始めています。
基本的に、WebAssembly下でPHPを動かすデプロイ可能なものを構築した人々がいることに気づき始めています。
興味深いですね。基本的にはブラウザで動作するということですか?
そうですね、ブラウザで動作するか、多くのエッジコンピューティングプラットフォームが事実上WebAssembly互換だからです。これは興味深いことです。PHP プログラミングが初心者がすることだとか、どうでもいいことだという自己卑下は完全に理解できますが、PHPについて素晴らしかったことは、最高の開発者体験、または最高のデプロイ体験を持っていたことです。テキストファイルを編集してサーバーにアップロードするだけで動作しました。
確かに、いつも頭の奥にあったことの一つは、ホスティングプロバイダーに何かをオンラインに置くと、一台のマシンで何百ものウェブサイトを一緒に動作させることができていたと確信していることです。しかし今では、現在のものを動作させるために、ウェブサイト専用のメモリやCPUがどれだけ必要かわかりません。
そうですね、物事が常に良くなるわけではありません。でも、多くの人を失う前に、我々は人々を引きつけるでしょう。
では、Docklingに飛び込みましょう。ポッドキャストの冒頭で紹介しましたが、Docklingは開発者がデータを処理するために使用するツールです。皆が理解するのに非常に役立つと思うのは、もちろん似たようなことをする他の多くのツールが存在するということです。Docklingの起源の物語を聞いてみたいと思います。あなたとDocklingの他の保守者たちが、既存のツールでは十分でない、または特定の使用例をカバーしていないと感じた時点は何でしたか?そしてDocklingに取り組み始めるきっかけは何でしたか?
起源の物語を少し過ぎたら、現在の時点で、Docklingとは何か、開発者にとって説明する最も簡単な方法は何でしょうか?
DocklingプロジェクトとIBMでの開発背景
私が年を重ねて最善を尽くして説明し、実際の数年間の歴史を通じて説明しようと思いますが、なぜそうなのかは少しで理解できるでしょう。
今朝か昨日、IBMウェブサイトに非常に素晴らしいブログ投稿がありました。私の同僚Peter Starのインタビューで、Docklingの背後にある歴史が書かれています。ちなみに、7月にDocklingの1周年記念を祝いました。
それは良かったです。でも実際に、あなたの質問の核心に答えるため、私が言ったように、基本的にDocklingは昨年7月から活動していますが、昨年の夏にコードを書き始めただけではありません。
文書を処理し、一般的にデータを処理できることについて、私たちのチームでは2016年から17年頃に始まったと思います。かなり前に遡ります。信じられないかもしれませんが、当時、実際に文書、特にPDF文書をどのように読むかという話は、完全に異なるシナリオでした。
本当に、私たちが消費できる多くのツールがあり、私たちが必要とし、今も必要だと知っている品質を返してくれるものがありませんでした。適切な内容を取得するためです。なぜなら、Docklingの主な焦点の一つは、本当に文書の内容を取り出すことだからです。
私たちは実際にはPDFフォーマットである視覚化についてはあまり気にしないようにしています。これは本当に画面上で良く見えるように設計され、印刷時に同じ結果を得られるフォーマットです。基本的にはそれだけで、私たちのチームのようにPDF文書に深く入り込んだことがない人々に持ち出すのはいつも良いことです。
通常、私はそれをベクターグラフィックツールのように説明します。そこではボックスを描き、そこにいくつかのコンテンツを入れます。テキストセルをどの順序で入れる必要があるかを教えるルールや慣例はありません。だから上に一つ、下に一つ持って、それから上に戻ることもできます。これらは読み順に関するすべての問題です。
例えば、単一のテキストセットにどれだけのテキストを入れるかについての慣例もありません。私たちは完全な行のテキストがすべて良く表現されている文書を見てきましたが、単一の単語を持つものもあり、次の単語は次のテキストセルにあります。そして、それらの場合に良く見えるようにするために、実際にスペース文字をそこに入れる必要はありません。二つのテキストセルを視覚的に分離するだけで、全く同じに見えますが、実際に文書からコピー・ペーストを行うか、PDFリーダーツールと呼ぶものを使用すると、非常に多くの場合、単語間の分離なしに単一のテキスト文字列を取得するだけです。
これらは実際に私たちが始めた時の主な課題でした。文書を変換するという完全なアイデアは、私たちにとっての必要性として始まりました。なぜなら、重要な部分は、最初は本当に文書を変換したくなかったからです。私たちは文書内のデータ、内容、知識を使用して、より多くの科学的発見をし、特に材料発見、通常は科学出版物に符号化されている性質について多くの焦点がありました。
そのため、GenAIエリアの前に最初に内部的に使用した、知識グラフを構築し、知識抽出を行うためのツールを構築しました。すべてがそれで、それは全体の活動の一部でしたが、主要な構成要素ではありませんでした。
昨年、Redditの同僚との強力な協力もあって、彼らはモデルのファインチューニングのためのStark labというツールを公開していました。モデルをファインチューニングするには、データを提供する必要があり、文書を変換する必要があります。
彼らは完全に自分たちで、彼らの基準に合う異なるソリューションを試しました。まず第一に、彼らはオープンソースプロジェクトとして実行したいので、ブラックボックスのようなAPIを呼び出すのではなく、オープンソースコンポーネントのみを持ちたいと思っていました。
彼らが実際に私たちが行っている作業を発見した時、それはサービスとして公開されていました。私たちも当時そうしていましたが、このより密接なつながりがあったので、彼らは実際に私たちにそれを持ち出しました。全体のパッケージ、全体のアプリケーションをオープンソースにすることを検討できるかと言って、基本的にそこで、最初のアイデアから10日以内にIBMリーダーシップ内でそれについて議論し、オープンソース活動として推進しました。基本的に簡単に言うと、それがどのように生まれたかです。
正直に言って、オープンソースにすることを決めた時、確かに他の利用可能なソリューションも探しましたが、私たちが既に内部的に持っていたソリューションは、既に多年にわたる開発を経ており、試行錯誤もしていました。私たちは何度も失敗しました。
それは素晴らしいです。その話はまだ聞いたことがありませんでした。それは本当に興味深いと思います。オープンソースが生まれる他の多くの似たような例があると思いますが、私が思いつく人気のあるオープンソースプロジェクトのほとんどの例では、それらは最初からオープンソースで始まり、そこから成長しました。
でも例えば、Reactは実際にあなたが説明していることの本当に有名な例だと思います。FacebookがReactを内部的に開発したと思います。それはときどきKubernetesの場合でもあります。
そうですね、実際に。これはパターンのようです。時々起こることです。でも素晴らしいことは、最初からオープンソースで始まっていなかった場合、実際に動作する必要があるものを構築しているということです。なぜなら、実際のビジネス問題、あなたとあなたのチームが取り組もうとしている実際のソート問題を解決しようとしているからです。それは動作しなければなりません。非常に人気があるが実際には動作しない多くのオープンソースのもののようなものではありえません。
私たちにとって重要な洞察の一部は、私たちにとっては常に動作する必要があること、非常にシンプルで簡単に初期に取得できることでした。数分、それより少ない時間で、期待する結果を得られるべきです。そうでなければ、人々は正直に言って丸半日や丸一日を費やしてそれについて興奮する必要はありません。
私も含めて私たちすべてが、ある意味で物事が起こることを期待する速度によって汚染されていると思います。私は今、Carterが以前これを聞いたことがあるでしょう、彼は目を丸くするでしょうが、モニターに頭をぶつけ、O’Reillyの本やマニュアルページを読んで実際に何かを進める必要があった日を覚えています。
今では、サービスにサインアップしたら5分以内に何か有用なことをしていることを期待します。私たちは以前持っていたような注意持続時間を持っていないと思います。だから、一日中または半日かけて始めることが必要な場合、何かに夢中になってもらうのは難しいです。
私が思うもう一つのことは、Mcklliさん、これはデモに飛び込むための素晴らしい移行点だと思います。でもその前に、私たちは本当に人々のために非常に明確な絵を描いたと思います。つまり、Docklingが何であれ、それは間違いなくPDFを処理するのに役立つものです。
もちろん、PDDFsは開発者が解析したい標準的で第一のものかもしれませんが、確実にもっと多くのことができると思います。他に何ができるかの例を見るか、あなたが私たちに教えてくれるでしょうが、開発者が動作を望む速度の観点から、私が取る角度は、開発者がこれは単に時間をかけることにあまり興味がない問題だということです。データは重要だからです。
つまり、あなたは既にPDFが内部でどのように見えるかを説明するために時間をかけすぎているかもしれませんが、ほとんどの人は気にすべきではありません。彼らは単に
DocklingとAIアプリケーション開発者への影響
その通りです。アプリケーションのように、実際にMcklliさん、私はDocklingと、ほぼすべてのAIツールについて、AI によってパワードされた異なる種類のソフトウェアを構築している異なる種類のエンジニアがいます。私はアプリケーション開発者の視点から世界を見ています。誰かがユーザー向けのアプリケーションを構築している開発者の視点から見ています。私はフルスタックJavaScript開発者で、Webアプリケーションを構築して育ちました。これは私のバイアスです。他の多くの使用例があることはわかっています。
でも、これらの人々の多くが、エンドユーザーのために作成したいAI対応体験の種類を想像する時、彼らはデータ側を理解するために数日や数週間を費やしたくありません。彼らは魔法を残りに求めています。
そうですね。でも彼らはそのデータが存在し、構築しようとしている実際のユーザー向けアプリケーションの一部として、クエリ可能で、フィルタリング可能で、有用であることを求めています。
とにかく、Docklingのようなツールでは、開発者がこれらのことを知る必要がない、これらのことを気にする必要がないようにできればできるほど、そのツールが彼らにとってより有用になります。私たちは今いくつかのデモに飛び込むべきだと思います。
スクリーンを共有しましょう。
私の画面が見えますか?
ええ、見えます。いいですね。正直に言って、歴史について話すのに良いチャンスで、実際に良いスタートです。7月、昨年7月が見えますね。
そして11月に大幅な成長の始まりがありました。今日も線の変化を見ています。どこまで継続できるか見てみましょう。今日いくつかのことをしました。SOTイベントがあったかもしれません。線がそれほど長い前ではありませんでした。
Langflowが37,000スターだったのはそれほど前のことではありませんでした。プレッシャーはありません。
プレッシャーをかけましょう。どこから始めるのが良い場所でしょうか?コードに移る前に、あなたがコードに入り、スライドを見ないべきだとわかっていますが、実際にDocklingが何を違って行うかについて話すので、あなたにそれを説明できるように少し視覚的になる必要があります。コードでそれがどのように動作するかをすぐに見るでしょう。
実際に、まず第一に、体積電子顕微鏡について知っていますか?
いいえ、詳しく教えてください。
超高速でやります。あまり時間をかけたくありませんが、基本的に1つのスライドがあり、人々がソーシャルメディアに投稿することから取ったように見えます。
これは2月から3月の時間枠の頃でした。現在、かなりの数の科学出版物がvegetative electron microscopyについて書いていることが実際に発見されました。これは存在しないもので、人々がまずモデルを使用して論文を書き、モデルが訓練されたものを知っているためにのみ出てきています。これは1959年の古い記事に由来し、vegetativeとelectron microscopyという単語が2つの異なる列にありました。古典的な列ジャーナル論文のような、単純なPDF支援ツールを取るだけで、実際に単一の単語を作るでしょう。これは私たちがDocling linkで適切に解決できると数年前から知っている問題の一つです。段落はvegetativeとmicroscopyが段落の完全に反対側にあるべきように見えます。
このスライドにある興味深い部分で、実際にプレゼンテーションに入るつもりはありませんが、十分大きいはずです。Docklingの主要コンポーネントの一つは、ページ内のクラスターと呼ぶセクションを識別し、それらにロジックを適用することです。つまり、テーブル領域、図領域を識別し、これはテーブルのキャプションで、それにリンクする必要がある図のキャプションだと識別します。例えば、上部にページヘッダーと異なる列があり、例えば一つの列で始まり次の列で続く文章、段落があります。
これらは私たちがDocklingで識別するコンポーネントの種類で、特別な扱いをします。これにより、読み順が間違って行われた場合に修正し、他のテキスト片を交えることなく、文書の内容と内容の流れを本当に取得できます。
例えば、単純なPDFリーダーを取るだけなら、右側にあるようなものを得るでしょう。そこにはページヘッダー、基本的にテキストとしてアンラベル化されたテーブルがあります。それから例えば段落があり、それから図のキャプションがあり、それから次の側の段落と続きます。
私たちは通常、これらを浮動オブジェクトと呼ぶものを取り、フローから取り除くことで、本当にフルな内容を得て、文章がすべて適切に続き、例えばページヘッダーとフッターでさえ、通常デフォルトでエクスポートするものから除外します。なぜなら、きれいな内容だからです。とにかく、それがスライドで見せようと考えていた限りでした。
DocklingのアーキテクチャとAIモデルの使用
それは良いです。コードに飛び込む前に、アーキテクチャについて質問したいと思います。Docklingについて話し、PDFデータを解釈することでDocklingが行うことについて話す時、Docklingはその特定のプロセスで何らかのモデルやAIを使用していますか?
それについて触れるのは非常に良いことです。なぜなら、実際にこれらのすべての部分が、少し後で示すコード例に反映されているのを見るからです。私が実際にこれはDocklingの一つの主要概念を持ち出すのにも役立ちます。それは変換パイプラインの概念で、この黄色で見るもので、このDockling文書を作成します。これは本当に作成できる文書の最も損失の少ない表現で、それから一つから文書の内容を取って、generativeAIアプリケーションで使用できます。マークダウンやHTMLに行ったり、チャンクしたり、データセットを構築したりできます。正直に言って、私たちはいつもユーザーが何をするかに驚かされるのが好きです。
黄色の部分は本当にAIが適用されている部分です。PDFだけでなく、異なるファイル形式もサポートしているので、多くのオプションがありますが、それらは正直にパイプライン名のように単純で、ほとんどAIが適用されずに通過するだけです。しかし、文書を変換する時、実際に第4ステップでPDFリーダーを使用します。
以前言っていたように、PDFリーダーが間違ったテキストの文字列を与えるということを、実際に行いますが、これはステップの一つに過ぎません。それから、スキャンされた文書の場合は、同じ文書を取得するためにOCRを行う必要があり、これはかなり明確だと思います。
それから、レイアウト分析があります。これは、以前説明したようにボックスを識別するオブジェクト検出モデルです。例えばテーブルのようないくつかのコンポーネントについて、専用のモデルを作成しました。これはテーブルの図を取り、マルチ列ヘッダーやすべての複雑なテーブルの本当に特別な機能を含む2Dグリッドを再構築することができます。私たちは見てきました。100%正確でないテーブルがまだありますが、多くの他のツールと比較して、テーブルの非常に非常に良いカバレッジがあることを知っています。
例として挙げると、今はビジョン言語モデルを使用してマークダウンエクスポートに直行することもできますが、マークダウンに行く場合、マークダウン表現が制限されます。マークダウン表現でのテーブルマルチ列ヘッダーなど。確かに、そこにHTMLを入れることもできますが、それはまだ少し異なります。
そのため、このDockling文書表現があります。これは可能な限り損失の少ない表現で、各テキスト片を常にポイントでき、例えば視覚的グラウンディングを行う際の例がある非常に重要で、各コンポーネントがどのページから、ページのどこから来ているかなどを追跡できます。
コードに飛び込みましょう。ちなみに、フォントは十分大きいですか?大きくすることができます。
もう少し大きくしましょう。
これは、いくつかの会議ワークショップでも使用するノートブックのセットです。みんなが実行できるようにリンクを貼ると思います。私たちは、すべてのアクティビティをリストし、すべてをそこに置こうとしているdockling workshopsというリポジトリがあります。
簡単に言うと、これらはDocklingで持っている基本的なインポートです。でもこれがあなたのガイドです。これはdocument converterで、基本的にすべての作業を行う人になります。なぜなら、Docklingの最小限の例は、実際に実行してみますが、これになるからです。
基本的に、この3行が文書変換になります。converterオブジェクトを作成し、converter.convertを実行します。URLやローカルファイルを与えると、それを起動できます。これで実際に取得し、数秒で前に説明したパイプラインのすべてのステップを実行します。
完了しました。今このdocオブジェクトがあります。
コンテキストを明確にするために、今私たちはこの段階にいます。このdocオブジェクトがあります。
できることの一つは、例えば実行前にマークダウンにエクスポートすることです。HTMLへの純粋なテキストへのより具体的なものもあり、例えばsaveもあります。これも興味深いと思います。数ブロック後にあると思うので、デモを台無しにしてしまうかもしれませんが、この画像モードがあります。これは文書内の画像をどのように見たいか、最終表現でそれらをどのように表示したいかを選択できるものです。デフォルトで、ここに画像がありましたというプレースホルダーを置くと思いますが、それらを埋め込むこともでき、そうすればすべてを含む自己完結型の文書を実際に持つことができます。または、ファイルに保存して、例えばHTMLファイルがある場合、ローカルにリンクします。
それはクールです。
Dockling文書のより多くの主要要素について、文書タイトルになる名前のようなものを印刷できます。どれくらいのページ、どれくらいのテーブルがあるかを簡単に印刷できます。基本的に、そこにある高レベルの概念です。
もう一つの重要な機能はiterate itemsです。名前が示すように、文書内のすべての要素を線形に通過するものです。線形にと強調したいのは、通常、文書には階層があるからです。セクションや箇条書き、複数レベルの箇条書きなどを想像できます。基本的に、これらすべてに対処したいのです。そして、iterateがすべてを線形に通過するのがそれです。
この場合、私たちは単にそれをポイントしています。もう少し興味深い部分に行きます。推測しますが、誰でも少し何が起こっているかを理解できます。
もう一つ持っている興味深い機能は、テーブルオブジェクトのようなものです。一つのテーブルで、実際にデータフレームをくださいのようなことができます。
それから、それを表示したり、CSVに保存したり、データベースに入れたり、何でも好きなことができます。
いくつかの例を見ましたが、今実際に興味深い部分、2つの部分に到達します。
それがです。ここで主要部分の一つが来ます。前に言っていたように、Docklingコンバーターはあなたの人で、変換を行い、デフォルトでそれを行います。この次のコードブロックにあるのは、変換中に何が起こるかをどのようにカスタマイズし、変更できるかです。
ほとんどの場合、デフォルト設定で動作しますが、このpipeline optionsオブジェクトと、既にここで利用可能なオプションのいくつかが見えます。画像を印刷して含めることを選択できる場合のように、画像スケールの解像度を選択できます。どのタイプのテーブル構造を使用するか、OCRを使用するかどうかを選択できます。
enrichmentsと呼ぶものもあります。これらは非常に特定のタイプの文書アイテムと呼ぶもので、さらにそれらを豊かにすることができます。例えば、方程式、公式として検出された何かがある場合、それのLaTeX表現を実際に作ることができるモデルを開発しました。
コードの一部がある時、正しいフォーマットですべてのコードを抽出できる特別なモデルがあります。これは愚かなことに聞こえるかもしれませんが、前にPDFが単にこれらのボックスを持っているということについて言っていたことを覚えているなら、簡単にスキップできることの一つはインデンテーションスペースです。間違ったインデンテーションでPython コードを持っている幸運を祈ります。これが実際に焦点を当てていることです。
公式について聞こうと思っていました。面白いことに、それについて質問しようと思っていたところ、突然ここで出てきました。それでは、Docklingは技術文書やコードベース文書、特にコードのインデンテーションを維持するようなものに特に適していると聞こえます。
コードフォーマットやすべてを尊重する形式でそれを抽出し、保存しようとしている場合、その部分は非常に重要です。
DocklingとAI開発での技術文書処理
学術的背景から来ていることを理解するためにそれほど遠くに行く必要はありません。私たちは科学文献について多くのことをしましたが、既に数年前からギアを切り替え、より多くのビジネス指向の文書について知っています。私たちが好んで言うのは、それらは良く見える文書だが、結局は視覚的なものとして行われていないということです。それが新しい挑戦です。
これらのモデルを訓練するために、実際に注釈キャンペーンを行い、注釈を付け、データセットを公開します。実際に使用するデータセットのいくつかがあり、持っているデモのいくつかは、より面白くするために私たちのデータセットを説明する論文を使用しています。
これらのデータセットでは、様々なビジネス文書があります。例えば、IKEAのマニュアル、車のマニュアル、通常は本当に考えないであろうあらゆるタイプの文書をそこに置きました。
Mcklliさん、すでに文書の処理について、データを解析するために実行されるモデルのいくつかについて確立しました。これらのモデルはすべてDockling配布自体に組み込まれていますか?pip installでDocklingをインストールする時、これらのモデルすべてを取得していますか?
私たちが試みることは、pip installでもです。PyPiアドレスではあまりスペースがないので、信じてください。私たちはクォータに到達し、それを消去するためのチケットを求める必要がありました。でも、実際にはすべてのモデルがHugging Faceでホストされており、初回実行時に自動的にダウンロードし、それからあなたのキャッシュに実際にそこにあります。また、パイプラインの設定で使用するモデルのみをダウンロードします。
コードのためのFormulaのようなものを示していたのも、それらがデフォルトで無効になっている理由です。少し高価だからですが、必要な時に使用しますが、パイプラインでより大きなモデルを起動するためにそれらをダウンロードする必要があります。
開発者の視点から、彼らはこれをコントロールできるということですね。一度にすべてダウンロードしてインストールできます。なぜなら、時々、出荷できる素晴らしいパッケージを準備したい場合、それですべて完了だからです。
もう一つの簡単な質問ですが、例えばOCRを例として使用しましょう。何らかのOCRモデルがあって、それを構築したわけではないかもしれません。それは別のオープンソースの一部です。Hugging Faceから来ています。Docklingのインターフェースは、私が自分の好みのOCRモデルをDocklingパイプラインに代替できるように定義されていますか?それは可能ですか?
これは実際に、ちなみにこれは私たちの素晴らしい新しいウェブサイトdockling.aiです。覚えておいてください。
文書化でどのページを探していたか見てみましょう。今ズームが多すぎてメニューが表示されません。どれがplugin sでした。
実際にDocklingでプラグインの概念があります。はい、そうです。
聞いている人々にとって、これは仕込まれた質問ではありません。
そうです。私はこのページを人生で見たことがありません。とても面白いです。
それが出てきたのは素晴らしいです。実際に、現在私たちが持っているのは、advanced usagesにあると思います。見つけなければなりません。文書化で検索を使用しましょう。OCR engines。
これは私たちが持っているエンジンのリストで、すべて第三者のOCRエンジンです。
基本的に、パイプラインで実行したいものを選択します。それらの半分がコミュニティによって貢献されたと思うのも興味深いです。オープンソースを持つことの素晴らしい点でもあります。
これらはすべて内部でプラグインと見なされていますか?つまり、それらはすべて実装され、プラグインとして公開されていますが、メインのコアパッケージの一部なので、パッケージに付属しています。Docklingで少し行ったことから、簡単にEasy OCRやTesseractなどにアクセスできることを知っていますが、それらはすべて同じアーキテクチャを使用しているので、別のOCRモデルをプラグインとして持ち込み、それを添付したい場合どうなりますか?
他のページにあるのがです。基本的に何でも持ち込むことができます。確かに同じものを満たす必要があります。基本的にベースクラスから派生する必要があります。実装する必要があることはほとんどありません。基本的にテキストセルを場所と内容と一緒に返す方法が必要です。OCRに関しては、それがより少ない必要なことです。
それは確実に私にいくつかの考えといくつかのことを与えます。これは本当にここで一つです。私たちがDocklingで今後数か月でもっと拡張するトピックです。より多くのプラグイン機能が欲しいからです。
例えば、特定のデータタイプにカスタムバックエンドを置くことができる。人々が自分のデータタイプを持ち込めるようにし、それからすべてがアップストリームプロジェクトにも移動できます。しかし、まず第一に、彼らはパッケージとしてそれを貢献でき、人々がDocklingをインストールし、他のパッケージをインストールし、それから同じで実行できます。
実際に私が非常に興味を持っていることの一つは、文書やそのようなことについて多く話してきましたが、どこかでDocklingページで見たと思います。一度ある時点で、私が物を弄っていた時にオーディオに関する何かを見ましたか?なぜなら、ここのDucklingはヘッドフォンを着用しているからです。
いや、それはありませんでした。彼がヘッドフォンを着用していることを、今あなたが言うまで実際に気づきませんでした。
そうです、正しいです。Docklingのミーに実際に書かれているように、このようなポッドキャストの音声を取得し、音声認識モデルでそれを処理する可能性も既に統合しています。そして、音声認識では、そのトピックで私たち自身でモデルを開発しませんでしたが、オープンソースモデルに依存し、それからすべての内容を再びDockling文書にパイプします。統一フォーマットでここに戻り、すべての次のステップに行けます。
素晴らしい。
いくつかの余分なことを示したかったのですが、通常引用しているものだと思います。なぜなら、それは私の意味するものに入るからです。すぐにそれについてすべてを費やしたくありませんが、これは実際に持っているものの興味深い部分です。
これは再び機能です。パイプラインオプションがあり、設定できる一つのことはpicture descriptionです。名前が示すように、提供するプロンプトでビジュアル言語モデルを使用し、文書を変換している間に、図にテキストの説明を実際に入れることができます。
テーブル用やコードに似たようなことをすることも検討しています。コードスニペットがある場合、モデルでそれを記述し、迅速なdoc stringを作成することを想像してください。なぜなら、これはマルチモーダルRAGアプリケーションを構築したい時にテキストとして簡単にエンコードでき、それからいつでもそれらのコンポーネントを取得できる情報だからです。ここでは、出力がどのように見えるかのいくつかの例を見ます。
見つけたら示します。人々が自分で見ることができるようなコードにあまり時間を費やしたくありませんでした。しかし、ここで2つのことを強調したいものがあります。
まず、Docklingでチャンカーがあり、段落があり、セクションがあり、すべての文書コンポーネントを知っているというように、文書レイアウトを尊重して文書をチャンクできます。本当に必要でない限り、分割すべきでないものを分割しない方法で。
例えば、段落ごとにチャンクを作成し、適合しない場合、それをそこに置かないか、置くかを想像できます。本当に切るべきでないものを切らないです。
Docklingでの視覚的グラウンディングとRAG
これが可能にするのは、再びマルチモーダルRAGを構築できることですが、示したかった興味深いのは、実際の視覚的な部分まで スクロールする必要があります。どこですか?来ています。ここです。
これがDocklingでできることです。RAGクエリの例のようなものです。質問は、配布された食料の量と比較して、どれだけ費やされたかについて何かだと思います。文書で取得された項目が見え、最初のものは実際に画像で、ユーザーを常にフルページに戻し、最終答えに貢献した関連部分を本当に強調できます。これを他のすべてのテキスト要素と行うことができ、通常は最初にマルチモーダルができることと、DocklingがDocklingドキュメントにすべてのメタデータを持っているので、ユーザーを常にそれがどこから来たかをポイントバックできることを示すのに非常に強力です。
私にこれを投げ返してください。私がこれを正しく理解しているか確認したいです。私が聞いていると思うことは、RAGベースのクエリ、検索のようなものを、このようなPDF、これらの画像のあるようなものに対して行うことができ、Docklingはその検索結果で関連だったものの境界ボックスを実際に示している文書を返すことができるということですか?それが私が聞いていることですか?
はい。
とてもクールです。これらの境界ボックスをDocに伝えるコードはどのように見えましたか?スクロールアップできますか?
重要な部分は、実際にチャンクを呼び出す時に表示したいものです。基本的に文書をチャンクします。推測しますが、名前のキーはかなり明確ですが、この特定のデモでは、実際にLangChainを使用して構築されています。この文書オブジェクトからlongchain文書オブジェクトに、このメタデータをランカーのコンテキスト化された方法のテキストと一緒に置いています。それから文書IDを置きます。画像参照があるはずです。refsと呼ぶものがあるはずです。これらのようなもの。
ハッシュタグSLピクチャーズのように見えるようなハッシュです。またはtext slash 21で、これらはアンカー識別子と呼ぶようなもので、Docklingドキュメントに戻るために使用でき、そこでアイテムに出典、ページ、境界ボックスなどがあります。
これは非常にクールです。
今日Docklingが構造化出力について発表したかなりクールな新機能について、デモ可能かどうかわからないのですが、話すことはできますか?
発表しました。ここのデモにはありませんが、どのように見えるかを少し示すことができます。
そして、それを引き上げている間に、私の種類の実際に、私が正しいか間違っているかを教えてください。発表を読んだ方法では、開発者が長い間LLMからの構造化出力を使用し、それを活用してきたと思います。LLMに質問をして、LLMが答えを入れようとする何らかのスキーマを定義できます。これは開発者の視点から非常に有用です。なぜなら、下流のコードがそのデータが特定の方法で構造化されることを期待しているので、それを操作できるからです。
実際にここでコードの一片を示しますが、NCPで利用可能な別の接続も示します。もう少し素晴らしい実行していたものがあると思いますが、簡単に言うと、これらの新機能があります。前に言ったようにdocument converterがありました。今、新しい人はdocument extractorで、document extractorにはextract機能があり、ファイルとテンプレートを与えます。この場合のテンプレートは文字列、辞書、Pydanticオブジェクトのようなものです。それから内部的に、構造化情報抽出を行うことができるこれらの素晴らしいビジュアル言語モデルを使用し、結果オブジェクトで抽出されたデータを返し、それを示すことができます。
そして、それは私が与えたスキーマに準拠します。
そうです。それが私たちが構築している別のものです。
今、DocklingをMCPとして統合したものに切り替えます。MCPツールとして、例えばLM studioで実行しますが、結局一つのツールは他のツールのようです。これは、すべてのコンポーネントがはんだ付けされたいくつかのデータシートのようなものです。CPUタイプ、どのRAM、どれだけのフラッシュSSDストレージなどについて質問しています。それから、実際に利用可能なすべてのツールの右側に、ツールを使用してこの場合に変換を行ったのが見えます。内部表現に文書を変換し、それからスキーマを自動的に定義してツール呼び出しを行います。ここで、素晴らしいテーブルを作るモデルで結果が表示されることもできます。
これが今日発表されたばかりの新しいエキサイティングな機能のいくつかです。
でも、すみません、Dockling MCPサーバーと言った時、それはどういう意味ですか?
つまり、私たちは文書と操作するためのいくつかのツールを許可する、いくつかのコンポーネントがあります。私たちが行う興味深いことのいくつかは、文書を変換し、要約できることです。ライブで実行して見ることができます。
でも明確にするために、Dockling配布は開発者が実行できる組み込みのMCPサーバーと一緒に来るのですか?
基本的にpip install dockling-mcpを行い、それを持ちます。
それは実行するのにどれだけ簡単ですか?実際にメインのreadmeから、私たちはアバターが好きです。グラフィックで笑っています。面白すぎます。
ちなみに、ちょっとcall to actionに入りますが、人々がTech Exchangeで私たちに参加したい場合、配るステッカーがたくさんあります。
それは本当です。誰か正確なTech Exchangeの日付を覚えていますか?6日から9日ですよね?
そうです。視聴または聞いている人々にとって、IBMは開発者向けにTech Exchangeという本当に素晴らしいイベントを主催しています。私とDavid初回参加になります。本当に楽しみにしています。
フロリダ州オーランドで、来る10月6日から9日で、月曜日、つまり6日だと思いますが、無料で参加できます。
通常はチケットを購入する会議のようなものですが、月曜日は一種のオープンソースデイとして知られ、皆が利用できるワークショップを要求に応じて行います。
とにかく、可能であれば10月6日にオーランドに行くことができれば、Docklingを含む多くの興味深いオープンソースプロジェクトを探索する本当に素晴らしい日になると思います。Tech Exchangeについて質問があれば、私やDavidまでお気軽に連絡してください。詳しい情報をお渡しします。本当に楽しみにしています。
パッケージとインストール方法について聞いていました。dockling mcpのミーには、パッケージとして、またはLM studioのようなツールでクリックインストールして、そこにあるような文字列として含めることができる例があります。
これは素晴らしいです。明示的に言ったかどうかわかりませんが、MCPはこの分野で構築している人々にとってデファクト標準の期待される統合ポイントになっています。MCPサーバーがなければ、人々は混乱します。「MCPサーバーがないってどういうことですか?」のような。
本当にそうです。でも、それは実際に真実です。Docklingのようなオープンソースプロジェクトを見ると、右側のすべてのアクションやツールを見ることができます。数十個もあります。MCPがなければ、開発者として、それらをつなぎ合わせるために数百や数千行のPythonコードを書くことができますが、少なくともいくつかの使用例のセットでは、MCPがより効率的であることを人々は理解しています。
私たちがDocklingで常に持っていた精神に非常に適していると思います。ワークフロー、ツールに統合するシンプルなコンポーネントであるべきです。
ツールを置き換えたくありません。generativeAIアプリケーションフレームワークを持ちたくありません。文書変換を行い、それからあなたのツール選択に統合したいだけです。だからMCPは基本的にすべてのagentic flowsに接続する方法で、モデルとの相互作用がある度に、モデルが文書と作業できるようにする方法です。
実際に今行っていることの一つは、変換について多く話していますが、MCPで一歩さらに進み、実際に文書を生成することを検討しています。「オープンソースAIの未来についての文書を作成する」のような例のタイプがあり、それからモデルが行き、新しい文書を作成し、段落を追加し、新しいリストを追加し、最終的にもちろんマークダウンの小さなスニペットを得ます。可能なことのデモの一種です。
これは非常にクールです。面白いのは、私がここアメリカでアメリカンフットボールの最中にいることです。これは、あなたが楽しんでいるサッカーのより劣ったバージョンです。でも私はそれを愛しています。
ここアメリカでは、多くの人がファンタジーフットボールというゲームをします。私と友人がプレイし、好きな選手で自分のチームを作ることができ、彼らが実生活でポイントを獲得すると、私もポイントを蓄積できます。とても楽しいゲームです。
そして、PDF形式でたくさんの文書があります。チートシートのように、最高の選手が誰か、どのようにランク付けされているかなどの情報です。これらのものは一般的に、紙を持って座り、使用することを意図されているので、PDFとして共有・リリースされますが、もちろん私はプログラマーで、AIで構築することが大好きなので、すぐにこれらのPDFを手に入れる必要があり、どのように処理し、ファンタジーで成功するためにAIを有効にするかを考えています。
あなたの例は少し素晴らしいです。私たちも税金の書類を自動化処理することで提出することを考えています。
私もそれが大好きです。でも、それは真実だと思います。AIが明らかにインターネット、ワールドワイドウェブの背後で構築され、ほとんどの部分でHTMLでした。
しかし、明らかにHTMLでないコンテンツの、はるかに大きな世界があると思います。PDFであろうと、スキャンされた本であろうと、ただのあらゆる物です。人々がより良いGoodreads、このデータによってパワードされたこれらの体験のより良いバージョンを構築したいと思う時、そのようなものをどのように解除するかを理解する必要があります。だからDocklingは本当に本当にクールに見えます。
時間を割いて私たちと一緒に過ごしてくださってありがとうございます。Docklingについてもっと知りたい人のために、何をすべきでしょうか?
まず、前に言ったようにdockling.aiウェブサイトです。基本的に出発点です。そこに行ってください。でも、スター数を増やしたいので、GitHubリポジトリへのリンクをクリックしてください。GitHubリポジトリをスターしてください。例えばスター数を増やすために。
この番組を見ている間に、The Flowをsubscribe、評価、レビューしてください。大変感謝します。それから、本当に人々に試してもらい、フィードバックをもらうのが大好きです。実際に立ち上げているもので、ウェブサイトでリンクを見つけることができるのは、Discordサーバーです。
そこに参加できます。もう少し定期的なコミュニティコールを開始する予定です。定期的にいくつかのトピックについてより深く掘り下げる予定です。会議やワークショップを行い、一緒に集まれる場所で皆さんにお会いできることを楽しみにしています。
実際にDocklingを手に取り、もう少しコードが少ないものを望む場合、Lang Flowにバンドルコンポーネントとして既に知っているように、実行できます。
そうです。基本的に構成要素で行うことができます。
DocklingはDavidと私のお気に入りのAIツールの選択に統合されています。実際に、いくつかの楽しい発表があると思います。Langflowの次のバージョンが数週間後に来ます。Langflow 1.6です。
そして、そこでDocklingについて共有すべき楽しいものがあると思います。
素晴らしい。Mcklliさん、参加してくださって本当にありがとうございました。視聴してくださった皆さんもありがとうございます。これはThe Flowのもう一つの素晴らしいエピソードで、今私はクールな新しいおもちゃで遊ぶために3時間をカレンダーからブロックする必要があります。新しいGoodreadsを作る必要があります、Carter。
その通りです。私は使用する選択肢がないので多くのアプリがあると言わざるを得ません。それらに対する本当に素晴らしい代替案がないからですが、それらにとても失望しています。
Goodreadsは基本的に、誰もより良いバージョンを作成していない非常に平凡なアプリだと思います。あなたが自分で考えることができる他にもたくさんあります。でも興奮するのは、AIを使用して、Docklingのようなツールを使用して、面白いことに、私はここシアトルで3週間後にハッカソンを主催していますが、これらのツールを使用して開発者が24時間で構築できることを信じられません。
何が出てくるかを見るのはいつもクールです。
素晴らしい。再度、参加してくださって本当にありがとうございました。視聴してくださった皆さんもありがとうございます。次回のThe Flowでお会いしましょう。
お疲れ様でした。皆さん、さようなら。


コメント