一、软硬要求

Scriber • KV结构识别系统,支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器平台上面。对于开发,测试及生产环境的服务器的软件配置和硬件配置有以下要求和建议。

1. 硬件配置

如下,是部署“Scriber • KV结构识别”系统(CPU)的推荐配置:

CPU

如下,是部署“Scriber • KV结构识别”系统(GPU)的推荐配置:

GPU

2. 操作系统

如下,是部署“Scriber • KV结构识别”系统的推荐操作系统类型和对应版本:

OS

3. 依赖软件

如下,是部署“Scriber • KV结构识别”系统的依赖软件及对应版本:

dependencies

二、系统依赖

Scriber • KV结构识别系统,分为前端、后端和模型这三个项目,以下分别介绍其依赖的工具或者软件对应版本。如果需要手动部署的话,则需要安装,具体如下所示。

1. 前端依赖

如下,是Scriber • KV结构识别系统前端的依赖列表:

dependencies

2. 后端依赖

如下,是Scriber • KV结构识别系统后端的依赖列表:

dependencies

dependencies

3. 模型依赖

如下,是Scriber • KV结构识别系统模型的依赖列表:

dependencies

dependencies

三、系统部署

Scriber • KV结构识别系统使用Docker容器进行部署,对应其相关服务皆通过镜像方式进行启动,所以再部署应用服务之前需要安装Docker等相关的工具。下面,分别以Ubuntu Bionic 18.04和CentOS7.5系统为例,进行基础软件的安装。

1. docker-ce

◉ CentOS7.5

获取安装详情,可以参考 docker-ce官方安装文档(CentOS)

◉ Ubuntu Bionic 18.04

获取安装详情,可以参考 docker-ce官方安装文档(Ubuntu)

2. docker-compose

◉ CentOS7.5

◉ Ubuntu Bionic 18.04

获取安装详情,可以参考 docker-compose官方安装文档

3. nvidia-container-runtime

◉ CentOS7.5

◉ Ubuntu Bionic 18.04

部署CPU版本,则此工具无需安装。

获取安装详情,可以参考 nvidia-container-runtime官方安装文档

四、服务部署

Scriber • KV结构识别系统支持单机版部署和分布式部署这两种方式,具体操作部署步骤如下所示。

1. CPU单机版部署

单机版本部署,顾名思义,即在一台机器上面,一并启动下列所有服务。

服务图示:

service

◉ 使用已有镜像部署操作步骤:庖丁科技镜像地址-hub.docker.com

# 克隆仓库 $ git clone git@github.com:PaodingAI/ScriberKV.git # 部署CPU版本 $ mdkir scriberkv-demo $ cd scriberkv-demo $ cp ScriberKV/docker-compose/standalone/docker-compose-cpu.yml . $ docker-compose -f ./docker-compose-cpu.yml up -d

◉ 手动构建镜像部署操作步骤

# 克隆仓库 $ git clone git@github.com:PaodingAI/ScriberKV-FrontEnd.git ScriberKV-Frontend $ git clone git@github.com:PaodingAI/ScriberKV.git $ git clone git@github.com:PaodingAI/KISegmentator.git # 编译前端代码 # 编译前需要安装yarn工具,可参考:yarn官网(https://classic.yarnpkg.com/en/docs/install) $ cd ScriberKV-Frontend $ yarn install $ yarn build $ cd - # 编译ScriberKV镜像 $ cd ScriberKV $ ./ci/build_runtime_image.sh $ ./ci/build_image.sh $ cd - # 编译KISegmentator镜像 $ cd KISegmentator $ ./ci/build_runtime_image.sh $ ./ci/build_image.sh $ cd - # 启动服务 # 启动之前需要修改ScriberKV仓库的docker-compose-cpu.yml启动文件 # 将启动的yaml文件中镜像名称改为本地构建的名称即可(修改内容如下图所示) $ mdkir scriberkv-demo $ cd scriberkv-demo $ cp ../ScriberKV/docker-compose/standalone/docker-compose-cpu.yml . $ docker-compose -f ./docker-compose-cpu.yml up -d

docker

2. GPU单机版部署

单机版本部署,顾名思义,即在一台机器上面,一并启动下列所有服务。

服务图示:

service

◉ 使用已有镜像部署操作步骤:庖丁科技镜像地址-hub.docker.com

# 克隆仓库 $ git clone git@github.com:PaodingAI/ScriberKV.git # 部署GPU版本 $ mdkir scriberkv-demo $ cd scriberkv-demo $ cp ScriberKV/docker-compose/standalone/docker-compose-gpu.yml . $ docker-compose -f ./docker-compose-gpu.yml up -d

◉ 手动构建镜像部署操作步骤:

# 克隆仓库 $ git clone git@github.com:PaodingAI/ScriberKV-FrontEnd.git ScriberKV-Frontend $ git clone git@github.com:PaodingAI/ScriberKV.git $ git clone git@github.com:PaodingAI/KISegmentator.git # 编译前端代码 # 编译前需要安装yarn工具,可参考:yarn官网(https://classic.yarnpkg.com/en/docs/install) $ cd ScriberKV-Frontend $ yarn install $ yarn build $ cd - # 编译ScriberKV镜像 $ cd ScriberKV $ ./ci/build_runtime_image.sh $ ./ci/build_image.sh $ cd - # 编译KISegmentator镜像 $ cd KISegmentator $ ./ci/build_runtime_image.sh $ ./ci/build_image.sh $ cd - # 启动服务 # 启动之前需要修改ScriberKV仓库的docker-compose-gpu.yml启动文件 # 将启动的yaml文件中镜像名称改为本地构建的名称即可(修改内容如下图所示) $ mdkir scriberkv-demo $ cd scriberkv-demo $ cp ../ScriberKV/docker-compose/standalone/docker-compose-gpu.yml . $ docker-compose -f ./docker-compose-gpu.yml up -d

docker

3. OCR服务的对接

目前Scriber • KV结构识别系统内置了OCR识别机制,使用的是开源的ocrmypdf工具,该工具本身是tesseract-ocr的一种实现方案。如需接入阿里云的OCR服务,可在系统部署时按照如下方式对接,即可。

操作步骤:

# ./config/config-docker.yml # 修改ScriberKV配置文件,将OCR改为阿里云 ocr: service: "aliyun"

然后,在ScriberKV后端服务启动的时候,设置阿里云账户相关的秘钥信息环境变量,具体环境变量如下所示。之后,正常启动服务即可

PDFPARSER_CONFIG_OCR_ALIYUN_APP_KEY=xxxxxx PDFPARSER_CONFIG_OCR_ALIYUN_APP_SECRET=xxxxxx PDFPARSER_CONFIG_OCR_ALIYUN_APP_CODE=xxxxxx

五、访问地址

◉ 默认访问地址: http:<部署服务器IP>:80

◉ 用户名和密码: admin/111111

六、代码开源

我们已将相关代码开源,项目及说明文档地址如下:

后端项目https://github.com/PaodingAI/ScriberKV

  接口文档:https://github.com/PaodingAI/ScriberKV/blob/main/docs/api.md

  模型接入方法:https://github.com/PaodingAI/ScriberKV/blob/main/docs/model.md

前端项目https://github.com/PaodingAI/ScriberKV-FrontEnd

KV提取模型项目https://github.com/PaodingAI/KISegmentator

模型接口框架https://github.com/PaodingAI/aipod