GOT-OCR2.0部署教程

这的确是新的上等的OCR,但是部署有一定的难度,并且在WIN和Ubuntu不一样,所以请看情况尝试。

需求

  1. GPU,最好是支持BF16的A系列,当然不支持也没事,到时候改一下代码就行。没有GPU就算了,GPU显存小于8G也算了。
  2. 良好的外网,折腾的时候网不好也不行。
  3. GPT或者其他AI,万一有问题,可以问一下。

    开始前

    服务器开局

  • 如果是Ubuntu22.04,请参考GPU服务器开局教程
  • 如果是win,请自行安装显卡驱动和CUDA,安装方式网上都有。但是理论上来说不需要急着在部署之前安装CUDA,GPU驱动倒是记得安装。GAME和STUDIO实测没区别自己看着办。
    都记得安装miniconda,是必须要的。完整的CONDA就无所谓了,反正装了也用不到。

    配网

    自己去配。理论上不用代理也行,自己把源换了就是。

    正式开始

    把文件准备好

    git clone https://github.com/Ucas-HaoranWei/GOT-OCR2.0

    然后去github把权重下载,丢到一个文件夹,比如说这样。【他们甚至给出百度网盘】

    file

    七个文件都要下载,然后丢到weight文件夹,你自己想别的也行。

    配环境

    Ubuntu22.04没有难度,照葫芦画瓢就行了,直接跟着github页面走就是。
    重点在WIN。
    有三点需要改的。都在conda的环境下操作。

    1. 安装deepspeed,这个东西我两年前没办法装上去,现在有办法了,看自己情况选择一个人家编译好的版本就行。实测你自己默认安装根本不行。编译错误修不好的。
      这个是Python3.10的

      pip install https://github.com/daswer123/resemble-enhance-windows/releases/download/deepspeed/deepspeed-0.11.2+cuda121-cp310-cp310-win_amd64.whl

      这个是Python3.11的

      pip install https://files.pythonhosted.org/packages/2e/5c/2058713749655a6b1830ecb8d7db61637a396239610aeb11b59974d29b66/deepspeed-0.15.0-cp311-cp311-win_amd64.whl

      我自己在虚拟环境里面用的是3.10的那个。

      (got) D:\GOT-OCR2.0\GOT-OCR-2.0-master>python --version
      Python 3.10.14

      安装好了这个东西后再继续操作。

    2. 修改原先依赖文件
      可以看到原先依赖是写死了deepspeed的库的版本的,但是我实测下来可以用0.11.2,所以改掉就行了。
      图片位置就是要改的,现在已经改好了,图片上面是文件名字。

file

  1. 修改demo代码这一步如果是支持BF16的GPU可以不做。
    把两个Python文件都点开,

file

搜索torch.autocast,把多出来的b去掉。
改成下面这张图的样子。

file

好啦,现在环境配完,照着给出的例子试一下吧。

测试

单图片

随便丢了一张图,还是我截图的。

然后是输出

(got) D:\GOT-OCR2.0\GOT-OCR-2.0-master>python D:\GOT-OCR2.0\GOT-OCR-2.0-master\GOT\demo\run_ocr_2.0.py --model-name "D:\GOT-OCR2.0\GOT-OCR-2.0-master\weight" --image-file "C:\Users\Administrator\Pictures\book1.png" --type ocr
<|im_start|>system
You should follow the instructions carefully and explain your answers in detail.<|im_end|><|im_start|>user
<img><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad><imgpad></img>
OCR: <|im_end|><|im_start|>assistant

为若干路,各路设转运使等官,掌一路财赋等事。
    宋代县以上的行政单位是州,州政由中央派员前往管理,称为“知
某州军州事”(“军”指地方军队,“州”指民政),简称知州。州有通判,号
称监州官,不似后世一般的副职。州的属官有判官管行政,有推官管司
法。和州平行的还有府、军、监,设官和州大致相同。
    宋代没有太守,刺史也是虚衔。欧阳修知滁州时写《醉翁亭记》提
到太守,写《丰乐亭记》提到刺史,都是沿用前代的旧称。
    元代地方最高行政机构是行中书省,体制类似中央,也有丞相、参
知政事等官。明初沿袭元制,后改称承宣布政使司,简称布政司,但习
惯仍称为“省”,长官为左右布政使,掌一省之政。明代有战事时,派朝
臣出巡地方,处理军务,称为巡抚。遇有军事问题牵连几省,巡抚不能
解决时,则派总督处理。总督巡抚都是临时差使,不算正式地方官。清
代总督巡抚才成为固定的“封疆大吏”,巡抚是省级的最高长官,总督
则总揽一省或两三省的军民要政。这样,布政使就只管财政和人事,成
了督抚的下属了。
    明清一省分为数道,道下有府有州。府州的长官称为知府、知州。
其佐贰,府有同知、通判等,州有州同(同知)、州判等。有两种州:直隶
州略等于府;散州隶属于府,和县相当。
品阶勋爵
    品——古代把职官分为若干等级,通称为品。汉代以禄石多寡作
为官位高低的标志,例如九卿是中二千石,刺史太守之类是二千石,
县令是千石到六百石,禄石不同,月俸收入不同。曹魏时职官分为九
品,一品最高,九品最低。隋唐时九品又分正从,自正四品起,每品又
分上下二阶,共有三十级。明清加以简化,九品只各分正从,共十八
级。隋唐时九品以内的职官称为流内,九品以外的职官称为流外。流
外官经过考铨转授流内官,唐代称为入流。清代不列入九品之内的官
称为未入流。
    阶——隋代把有职务的官称为职事官,没有职务的官称为散官。

效果可以的,显存占用6G左右。

file

多图片

我觉得有必要改代码了,最开始我以为他多图片是一张一张批量执行,然后我没想到的是全部丢到LLM里面去跑,在三百多页的情况下不出意外的炸了。

file

al)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 27.92 GiB (GPU 0; 22.00 GiB total capacity; 34.16 GiB already allocated; 0 bytes free; 34.96 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

后面改成十张图,能跑,但是输出有些奇怪。

file

反正迟早要改代码跑并行的,不管了。

结论

是好东西,是可以继续开发的东西,而且不只是文字,线谱等也可以进行OCR,具体看他们提供的benchmark文件夹里面的东西就知道了。
代码原理什么的不解释了,这个AI清楚,先这样折腾吧。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇