有人知道pytesseract的image_to_data和image_to_osd方法的输出的含义吗?

时间:2020-04-27 14:45:00

标签: python ocr python-tesseract

我正在尝试使用 pytesseract 从图像中提取数据。此模块具有 image_to_data image_to_osd 方法。这两种方法提供了很多信息(TextLineOrder,WritingDirection,ScriptDetection,Orientation等)作为输出。

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

enter image description here

image_to_osd 的输出如下。每个术语的含义是什么?

页码:0 方向度:0 旋转:0 方向信心:16.47 剧本:拉丁语 脚本可信度:4.00

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

2 个答案:

答案 0 :(得分:1)

级别

  1. 没有block_num,paragraph_num,line_num,word_num的项目
  2. 具有block_num且没有paragraph_num,line_num,word_num的项目
  3. 具有block_num,paragraph_num和没有line_num,word_num的项目
  4. 具有block_num,paragraph_num,line_num且没有word_num的项目
  5. 具有所有这些编号的项目

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

的单词编号

但是最重要的是,所有4列都是相互连接的。如果该项来自新行,那么字号将从0开始重新计数,它不会从上一行的最后一个字号开始继续计数。 line_num,par_num,block_num也是如此。

请查看下图以供参考。
第一栏:block_num
第二列:par_num
第三栏:line_num
第4列:word_num
enter image description here

答案 1 :(得分:1)

my_image.jpg

例如,在以下代码中使用image_to_data测试my_image.jpg,我们将获得与results.png之类的结果。

results.png

  • 级别= 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:左上角坐标以及宽度和 当前单词的高度。

  • conf:当前单词的置信度, 范围是-1〜100。-1表示此处没有文本。的 最大值是100。

  • 文本:ocr这个单词。

image_to_osd结果的含义

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

  • 方向(度):当前图像中文本相对于其阅读角度的顺时针旋转角度,取值范围为[0,270,180,90]。

  • Rotate:记录相对于当前图像顺时针旋转的角度,当前图像中的文本将转换为可读角度,取值范围为[0、270、180、90]。与[度数]值互补。

  • 方向置信度:指示当前[度数]和[旋转]检测值的置信度。置信度越高,测试结果越可信,但到目前为止,尚未找到有关其值范围的解释。

  • 脚本:当前图片中文本的编码类型。

  • 脚本可信度:当前图像中文本编码类型的可信度。

从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)