Itext 如何设置Textricator PDF OCR阅读器的FSM配置?

Itext 如何设置Textricator PDF OCR阅读器的FSM配置?,itext,ocr,pdfbox,text-extraction,Itext,Ocr,Pdfbox,Text Extraction,我正在尝试使用名为的PDF文档解析器。它可以使用3种不同的方法来解析带有一些常见OCR库的PDF。(itext5、itext7、pdfbox)可用的方法有:文本、表格和表格。文本用于普通原始OCR识别,表格用于读取结构化表格数据,表格用于解析非结构化表格,使用有限状态机(FSM) 但是,我不能使用表单解析器。也许我只是不明白如何组织许多配置状态。文档中缺少一个简单的表单示例,最近有人使用form方法发布了一个表单示例,但未能发布。我也试了一下,但没有成功 问:有人能帮我在YML文件中配置状态机吗

我正在尝试使用名为的PDF文档解析器。它可以使用3种不同的方法来解析带有一些常见OCR库的PDF。(itext5、itext7、pdfbox)可用的方法有:
文本
表格
表格
。文本用于普通原始OCR识别,表格用于读取结构化表格数据,表格用于解析非结构化表格,使用有限状态机(FSM)

但是,我不能使用表单解析器。也许我只是不明白如何组织许多配置状态。文档中缺少一个简单的表单示例,最近有人使用
form
方法发布了一个表单示例,但未能发布。我也试了一下,但没有成功

问:有人能帮我在YML文件中配置状态机吗?
(这用于解析该回购协议发行的一个演示文件,如下面复制的屏幕截图所示。)



YML配置文件


提取器:“pdf.pdfbox”
标题:
默认值:100
页脚:
默认值:600
最大行距:2
rootRecordType:项
记录类型:
项目:
标签:“项目”
值类型:
-项目
-日期
-描述
-订单号
-数量
-价格
值类型:
项目:
标签:“项目”
日期:
标签:“日期”
说明:
标签:“说明”
订单号:
标签:“订单号”
数量:
标签:“数量”
价格:
标签:“价格”
初始状态:“INIT”
国家:
初始化:
过渡:
-
条件:项目
下一状态:项目
项目:
startRecord:是的
过渡:
-
条件:日期
下一状态:日期
日期:
包括:正确
过渡:
-
条件:描述
下一状态:描述
说明:
包括:正确
过渡:
-
条件:描述
下一状态:描述
-
条件:订单号
下一状态:订单号
-
条件:数量
下一状态:数量
订单号:
包括:正确
过渡:
-
条件:订单号
下一状态:订单号
-
条件:数量
下一状态:数量
数量:
包括:正确
过渡:
-
条件:价格
下一状态:价格
价格:
包括:正确
过渡:
-
条件:完
下一状态:结束
完:
包括:假
过渡:
-
条件:任何
下一状态:结束
条件:
项目:'73#order_number:'12由于Textricator是pdf解析imo的一块隐藏宝石,我很高兴看到有人在使用它,并在github上发布了一个使用示例文档的配置:

extractor: "pdf.pdfbox"

header:
  default: 100
footer:
  default: 600

maxRowDistance: 2

rootRecordType: item
recordTypes:
  item:
    label: "item"
    valueTypes:
      - item
      - date
      - description
      - order_number
      - quantity
      - price

valueTypes:
  item:
    label: "Item"
  date:
    label: "Date"
  description:
    label: "Description"
  order_number:
    label: "OrderNo"
  quantity:
    label: "Qty"
  price:
    label: "Price"

initialState: "INIT"

states:
  INIT:
    include: false
    transitions:
      -
        condition: item
        nextState: item
      - condition: any
        nextState: INIT

  item:
    startRecord: true
    transitions:
      -
        condition: date
        nextState: date  

  date:
    include: true
    transitions:
      -
        condition: description
        nextState: description  

  description:
    include: true
    transitions:
      -
        condition: description
        nextState: description     
      -
        condition: order_number
        nextState: order_number
      -
        condition: quantity
        nextState: quantity
      -
        condition: item
        nextState: item

  order_number:
    include: true
    transitions:
      -
        condition: order_number
        nextState: order_number
      -
        condition: quantity
        nextState: quantity

  quantity:
    include: true
    transitions:
      - 
        condition: price
        nextState: price

  price:
    include: true
    transitions:
      -
        condition: end
        nextState: end
      - 
        condition: description
        nextState: description
      -
        condition: item
        nextState: item

  end:
    include: false
    transitions:
      -
        condition: any
        nextState: end

conditions:

  item:         '73 < ulx < 110 and text =~ /(\\d)*/'
  date:         '110 < ulx < 181 and text =~ /([0-9\\-]*)/'
  description:  '193 < ulx < 366'
  order_number: '12 <= uly_rel <= 16 and text =~ /^.+(([0-9]{6})\\-)(([0-9]{2}))/'
  quantity:     '393 < ulx < 459'
  price:        '459 < ulx < 523'

  end:          'text =~ /(Footer)/'
  any: "1 = 1"
提取器:“pdf.pdfbox”
标题:
默认值:100
页脚:
默认值:600
最大行距:2
rootRecordType:项
记录类型:
项目:
标签:“项目”
值类型:
-项目
-日期
-描述
-订单号
-数量
-价格
值类型:
项目:
标签:“项目”
日期:
标签:“日期”
说明:
标签:“说明”
订单号:
标签:“订单号”
数量:
标签:“数量”
价格:
标签:“价格”
初始状态:“INIT”
国家:
初始化:
包括:假
过渡:
-
条件:项目
下一状态:项目
-条件:任何
nextState:INIT
项目:
startRecord:是的
过渡:
-
条件:日期
下一状态:日期
日期:
包括:正确
过渡:
-
条件:描述
下一状态:描述
说明:
包括:正确
过渡:
-
条件:描述
下一状态:描述
-
条件:订单号
下一状态:订单号
-
条件:数量
下一状态:数量
-
条件:项目
下一状态:项目
订单号:
包括:正确
过渡:
-
条件:订单号
下一状态:订单号
-
条件:数量
下一状态:数量
数量:
包括:正确
过渡:
- 
条件:价格
下一状态:价格
价格:
包括:正确
过渡:
-
条件:完
下一状态:结束
- 
条件:描述
下一状态:描述
-
条件:项目
下一状态:项目
完:
包括:假
过渡:
-
条件:任何
下一状态:结束
条件:
项目:'73订单号:'12太好了!SW author还在recordTypes下添加了
filter:'quantity>0'
(缩进4个空格)和valueTypes的quantity下添加了
type:number