有谁知道pytesseract的image_to_data、image_to_osd方法的输出含义?

Does anyone knows the meaning of output of image_to_data, image_to_osd methods of pytesseract?

我正在尝试使用 pytesseract 从图像中提取数据。该模块有 image_to_dataimage_to_osd 方法。这两种方法提供了大量信息(TextLineOrder、WritingDirection、ScriptDetection、Orientation 等...)作为输出。

下图是image_to_data方法的输出。这些列的值(级别,block_num,par_num,line_num,word_num)是什么意思?

image_to_osd 的输出如下所示。这里面的每一个词是什么意思?

页码:0 以度为单位的方向:0 旋转:0 定向置信度:16.47 脚本:拉丁语 脚本置信度:4.00

我参考了文档,但没有获得有关这些参数的任何信息。

级别

  1. 没有 block_num、paragraph_num、line_num、word_num
  2. 的项目
  3. 包含 block_num 且不包含 paragraph_num、line_num、word_num
  4. 的项目
  5. 包含 block_num、paragraph_num 且不包含 line_num、word_num
  6. 的项目
  7. 包含 block_num、paragraph_num、line_num 且不包含 word_num
  8. 的项目
  9. 所有这些数字的项目

block_num:检测到的文本或项目的块号
par_num:检测到的文本或项目的段落编号
line_num:检测到的文本或项目的行号
word_num: 检测到的文本或项目的字数

但上面所有4列都是interconnected.If该项目来自新行然后字数将从0开始重新计数,它不会从上一行的最后一个字数继续。 line_num、par_num、block_num 也是如此。

查看下图以供参考。
第一列:block_num
第二列:par_num
第 3 列:line_num
第 4 列:word_num

my_image.jpg

例如,在下面的代码中用image_to_data测试my_image.jpg,我们会得到类似results.png的结果。

results.png

  • level = 1/2/3/4/5,当前物品等级

  • page_num:当前项目的页索引。在大多数情况下,一张图片只有一页。

  • block_num:当前物品的方块物品。当 tesseract OCR 图像,它会根据PSM将图像分割成几个块 参数和一些规则。一行中的单词通常在一个块中。

  • par_num:当前项目的段落索引。这是页面 分析结果。 line_num:当前项目的行索引。这是 页面分析结果。 word_num: 一个块中的单词索引。

  • line_num:当前项目的行索引。这是 页面分析结果。

  • word_num: 一个块中的单词索引。

  • left/top/width/height:top-left坐标和宽度 当前单词的高度。

  • conf:当前单词的置信度, 范围是-1~100.. -1 表示这里没有文本。这 100 是最高值。

  • text:文字ocr结果。

image_to_osd结果的含义:

  • 页码:当前项目的页索引。在大多数情况下,一张图片只有一页。

  • Orientation in degrees:当前图片中的文字相对于其阅读角度的顺时针旋转角度,取值范围为[0, 270, 180, 90]。

  • Rotate:记录当前图片中文字要转换为可读的角度,相对于当前图片顺时针旋转,取值范围为[0, 270, 180 , 90]。与 [以度为单位的方向] 值互补。

  • Orientation confidence:Indicates 当前 [Orientation in degrees] 和 [Rotate] 检测值的置信度。置信度越大,测试结果越可信,但目前还没有找到对其取值范围的解释。

  • Script:当前图片中文字的编码类型。

  • Script confidence:文字编码类型在当前图片中的置信度。

从 pytesseract 导入输出 导入 pytesseract 导入 cv2

image = cv2.imread("my_image.jpg")

#swap color channel ordering from BGR (OpenCV’s default) to RGB (compatible with Tesseract and pytesseract).
# By default OpenCV stores images in BGR format and since pytesseract assumes RGB format,
# we need to convert from BGR to RGB format/mode:
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
 
pytesseract.pytesseract.tesseract_cmd = r'C:\mypath\tesseract.exe'
custom_config = r'-c tessedit_char_whitelist=0123456789 --psm 6'
results = pytesseract.image_to_data(rgb, output_type=Output.DICT,lang='eng',config=custom_config)
print(results)