メインコンテンツへスキップ
見出し画像

DeepSeek-OCRを試す

    DeepSeek-OCRが、普通のOCRとはちょっと違う文脈で話題になっていたので触ってみた。

    これのミソは、単にOCR(光学文字認識)ができることではなく、光学的(視覚的)に文章を理解することでより長い文脈に対応できると主張されているところ。

    なので、わざと長い文章を画像にして読み取れるか試してみるという意地悪なことをしないとこのモデルの真価は分からない。

    今回はKaraageさんの記事を参考にuvにして試してみた。

    使用したのはDGX Sparkではなく普通のA100で試した。そんなにVRAM使わないと思うけど。

    $ git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
    $ cd DeepSeek-OCR
    $ uv venv -p=3.12.9
    $ uv pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
    $ wget https://github.com/vllm-project/vllm/releases/download/v0.8.5/vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
    $ uv pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
    $ uv pip install -r requirements.txt
    $ uv pip install flash-attn==2.7.3 --no-build-isolation

    DeekSeek-OCRの公式のチュートリアルでは、wgetでvllmをダウンロードするくだりが省略されているので注意が必要。

    デフォルトではvLLM-Inferenceが推奨されているが、サンプルプログラムが複雑すぎてあまり趣味に合わなかったのでHuggingFace版でまず試す。

    $ cd DeepSeek-OCR-master/DeepSeek-OCR-hf
    $ python run_dpsk_ocr.py 

    で、動くのだけど注意が必要。
    まず、このサンプルコードがおよそシンプルすぎてダメ。
    こいつはデフォルトで、ファイル名が決まっているので、まず自分でOCRしたい対象を画像ファイルで作ってこのディレクトリにアップロードして、それから試さないといけない。

    8 # prompt = "<image>\nFree OCR. "
    19 prompt = "<image>\n<|grounding|>Convert the document to markdown. "
    20 image_file = 'paper.png' #ここを自分のファイルに変える
    21 output_path = 'output'   #ここに出力したいディレクトリ名を指定する
    22

    run_dpsk_ocr.pyを変更してから実行すると、とりあえずOCRされる。
    参考までに、最初にやってみた原稿は以下のような長いPNGファイル

    画像
    プレビューで表示させて適当にスクショ

    これが読み取れるんならまあまあ凄いのかもしれない。
    読み取られたMarkdownは以下

    
    ## はじめに 
    
    
    今日は皆さんに、僕たちが今まさに前進している、そして君たちがこれから作り上げていく未来について、少しだけ話し話をしようと思います。 
    
    
    テーマは「知能と生命 メディアと未来」。なんだか難しそうに聞こえるかもしれないけど、心配しないでください。これは、君たちが毎日使っているスマートフォンやゲーム、SNS、そして君たち自身の「風説」と「心」に深く関 
    
    
    わる、とてもイキイキイクイクな雰囲気が生まれる。 
    
    
    今、世の中は「AI」、つまり人工知能の話題で持ちきりです。まるで魔法のように絵を描いたり、人間と会話したり、難しいプログラムを書いたりする 
    
    
    AIは知能に近く、世界の中を描いています。 
    
    
    人間と面談時のプログラムは19世紀の女性でした。エイダ・ラブレスとい 
    
    
    う貴族の子女です。家族の話し合いがこの世に。 
    
    
    たが、先生が一生懸りとなろうとこができませんでした。 
    
    
    した。彼女は偶然知り合った発明家のバーバッジが 
    
    
    開発したコンピュータのために、最初のプロジェクトを書き、とても得意だったと云われつきました。 
    
    
    エイダは「コンピュータは手順さえ説明できればどんな能力もできる」ことを最初に示しました。この手は、100年後に出現することに 
    
    
    なります。 
    
    
    ところが、AIは知能と知識をより、手順を説明することになりました。人それぞれ手順は説明でき 
    
    
    るものの、AIが実際にその中でどのように判断し 
    
    
    ているかということはクラックネックスのままです。つまり、AIとコンピュー 
    
    
    タは、言葉で表しているようで実際には知識関係なものなのです。 
    
    
    このAIの登場によって、僕たち人類は、これまで当たり前だと思っていた 
    
    
    「知能」とは何か、つまり「賢い」ってどういうことなのか、という問いを、もう一度組み合う考え具合だければならないとなりました。 
    
    
    これまで「賢い」と言えば、テストで良い点を取ることや、たくさんの知識 
    
    
    を見ていることでした。でも、そんなことはもうAIの方が得意です。だし 
    
    
    たら、これからの時代、人間にとって本当に大切な「賢さ」とは何なのでしょ 
    
    
    うか? 
    
    
    この問いに答えるためには、「知能」だけを見ていては不十分です。僕たち 
    
    
    は「生命」そのものについて、そして人間の知能を表現し、伝えてきた「メディア」の歴史を考える、せたん数字を考える必要がある。 
    
    
    この講義が終わる頃には、君たちが今学んでいることの意味や、これからど 
    
    
    んな未来が待っているのか、そしてその未来の中で君たちがどんなヒーローや 
    
    
    トロイシになれるのか、そのヒットが見つかっているはずです。さあ、一緒に 
    
    
    未来を創るに行きましょう。 
    
    
    ## 第1章:生命のラジオと知能のはじまり 
    
    
    ## ——僕らはなぜ「考えているのか」 
    
    
    ## 人工知能と人工生命 
    
    
    まず、僕の研究分野である「人工知能」と、そ 
    
    
    の双子の兄弟のような「人工生命」の話から始め 
    
    
    ましょう。 
    
    
    「人工知能(AI)」は、一言で言えば「知能」 
    
    
    ばいものを機械で作ろう!」という研究です。 
    
    
    話や人間に勝つ人が、君たちも働いたことがある 
    
    
    かもしれないChatGPTという、AIは通算 
    
    
    たった一人(一体?)で非常に難しい問題を解く 
    
    
    エリートです。 
    
    
    一方、「人工生命(ALife)」は、「生命っぽいものを機械で作ろう!」と 
    
    
    いう研究です。こちらはAIと違って、たくさんの人工生命をコンピューターの 
    
    
    中にラビットやとを作り出します。時には数万株にもなります。そして、彼ら 
    
    
    が現状でどう振る舞うか、まるで社会的なように進化していく様子を観察するん 
    
    
    です。 
    
    
    AIが一人の天才アスリートなら、人工生命は学び揚を目指す野球部全員、 
    
    
    といった感じでしょうか。面白いのは、数が増えると、一体一体は解 
    
    
    ルールで働いているだけなのに、全体としては予測できないような複雑な動 
    
    
    き、つまり「社会性」のようなものが生まれてくることです。これを「創発」 
    
    
    と言います。 
    
    
    この二つの研究は、僕たちに根源的な問いを投げかけます。AIを研究すれば 
    
    
    するほど「知能とは何か?」という様にぶつかり、人工生命を研究すれば 
    
    
    するほど「生命とは何か?」という巨大な道に行き当たるのです。 
    
    
    ## 「生きている」って、どういうこと? 
    
    
    君たちは「生きる機構の話し合い?」と聞かれたら、どう考えますか? 
    
    
    が有名な無私の子「脳から内のきいたか?」 
    
    
    人工生命の研究者の中には、「動いているものが生命だ」と考えた人たち 
    
    
    がいます。この考え方だと、ロボットや自動車はもちろん、川の中やまちや橋 
    
    
    にそだんで動くのは、互い関係で「命」を追うことができるようになり、川 
    
    
    る大地。なんて言葉がありますが、あなたが詩的な表現だけではないのかも 
    
    
    しません。 
    
    
    でも、今ぴったり僕たちの実態として、犬や猫、自動車や川は根本的に「違 
    
    
    う」と感じますよね。その「違い」の正体は何なのでしょうか。 
    
    
    人工生命の研究者には、「自然生命と化学的環境でみる、人工生命は数学 
    
    
    的な性質である」と考えます。君たちの生活を元気な状態で歩いていく、コ 
    
    
    ビューターの中の人工生命は計算(数学)で動いている、ということです。 
    
    
    でも、この「化学的機構」というのが、実はとんでもなく違いものだった
    のです。 
    
    
    ## 量子力学と有限量子生命の秘密 
    
    
    量子力学 
    
    
    量子力学の研究の話をします。「量子力学」という言葉を聞いたこと 
    
    
    があるでしょうか。すごくエクロな世界の、原子や電子の振る舞いを説明す 
    
    
    る物理学です。この量子の世界は、僕たちの常識が全く適用しない、準則 
    
    
    不足違な世界です。例えば、量子は使をすり抜けたり(トンネル効果)、違 
    
    
    く離れた原子の量子と瞬間に物質をやり取りしたり(量子つくれ)します。まる

    結構読めてるのだが、画像についてはほぼゴミ。一つだけ読み取れた。

    画像
    なぜここだけ

    この辺りのパラメータ調整があんまり細かくできない印象。vLLM版だともっと細かいことをやってるのでもっとマシなのかもね。ちなみに画像のどこをどんなふうに読み取ったかバウンディングボックスで教えてくれる画像も吐いてくれる

    画像
    エイダの肖像部分が読み取れてない

    なんか微妙にズレてる気がするんだよな。

    ちなみに1ページだけ読み取らせたらそこそこうまく行った。

    画像
    1ページだけ読み取らせた場合
    画像
    エイダもちゃんと抜けてる

    マークダウンの方でもちゃんと画像が抜けてるのがわかった。

    
    ## はじめに 
    
    
    今日は皆さんに、僕たちが今まさに直面している、そして君たちがこれから 作り上げていく未来について、少しだけ長い話をしようと思います。 
    
    
    テーマは「知能と生命 メディアと未来」。なんだか難しそうに聞こえるか もしれないけど、心配しないでください。これは、君たちが毎日使っているス マートフォンやゲーム、SNS、そして君たち自身の「頭脳」と「心」に深く関 わる、とてもエキサイティングな冒険の話です。 
    
    
    今、世の中は「AI」、つまり人工知能の話題で持ちきりです。まるで魔法 のように絵を描いたり、人間と会話したり、難しいプログラムを書いたりす るAIが登場して、世界中が驚いています。 
    
    
    人類で最初のプログラマーは19世紀の女性でした。エイダ・ラプレスとい う貴族の子女です。彼女は詩人パイロンの娘でし 
    
    
    たが、生涯で一度も父と会うことができませんで した。彼女は偶然知り合った発明家のバベッジが 開発したコンピュータのために、最初のプログラ ムを書き、とても重要なことに気がつきました。 
    
    
    エイダは「コンピュータは手順さえ説明できれ ばどんな処理でもできる」ことを最初に予言しま した。この予言は、100年後には実現することに なります。 
    
    
    ところが、AIが扱う問題の多くは、手順を説明 することができません。AIを作る手順は説明でき るものの、AIが実際にその中でどのように判断し 
    
    ![](images/0.jpg)
    
    
    
    
    ているかということはブラックボックスのままです。つまり、AIとコンピュー タは、深く関係しているようで本質的には無関係なものなのです。 
    
    
    このAIの登場によって、僕たち人類は、これまで当たり前だと思っていた 「知能」とは何か、つまり「賢い」ってどういうことなのか、という問いを、 もう一度根本から考え直さなければならなくなりました。 
    
    
    これまで「賢い」と言えば、テストで良い点を取ることや、たくさんの知識

    拡張子がなぜか.mmdというミクミクダンスみたいなものになるので.mdにしてVisualStudio Codeでマークダウンを再現したところ、ちゃんと読み取れているようだった。これは1ページずつ使うならすごく便利だな

    タイトルもちゃんと識別できている

    画像
    なかなか忠実な再現度

    しかし、肝心の「画像で文字のコンテキストを追うから長いコンテキストも安心」という話はどこかに行ってしまう気がする。適材適所と考えるべきか、何か彼らが俺たちに隠していることがあるのか。

    仕方ないのでvllm版も試すことにする。
    こちらもほぼ使い方の説明がないので、僕がもしこのDeepSeek-OCRのリポジトリに点数をつけるとしたら75点くらいになる。ただしモノは良い

    vllm版を使うには、まずconfig.pyをいじってINPUT_PATHとOUTPUT_PATHを決めないといけない

    
    19 # TODO: change INPUT_PATH
    20 # .pdf: run_dpsk_ocr_pdf.py; 
    21 # .jpg, .png, .jpeg: run_dpsk_ocr_image.py; 
    22 # Omnidocbench images path: run_dpsk_ocr_eval_batch.py
    23
    24 INPUT_PATH = 'book.pdf' 
    25 OUTPUT_PATH = 'output'

    インターンかなんかに書かせたのを会社の名前でそのまま公開してるのか?と疑うくらいに雑。別にいいんだけど。

    で、書籍のPDFをそのままINPUT_PATHに渡したら、なんということでしょう。ほぼ完璧なMakrdownが得られました。

    画像
    なんと嬉しいvLLM版

    というわけでDeepSeek-OCRはvLLM版じゃないと本気出してくれなさそう。ただ、vLLM版は呼び出し方が煩雑で自分でラッパー書かないと暴れ馬のように暴れ回りそう。

    とりあえず現場からは以上です。

     

    shi3z

     
     
    さすらいのプログラマー 知能と生命の研究č€