mirror of
https://github.com/opendatalab/MinerU.git
synced 2026-09-24 23:10:23 +08:00
Merge pull request #1113 from myhloli/dev
refactor(ocr): remove unused functions and optimize OCR processing loop
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import math
|
||||
|
||||
import numpy as np
|
||||
from loguru import logger
|
||||
|
||||
@@ -252,32 +250,6 @@ def get_ocr_result_list(ocr_res, useful_list):
|
||||
return ocr_result_list
|
||||
|
||||
|
||||
def calculate_angle_degrees(poly):
|
||||
# 定义对角线的顶点
|
||||
diagonal1 = (poly[0], poly[2])
|
||||
diagonal2 = (poly[1], poly[3])
|
||||
|
||||
# 计算对角线的斜率
|
||||
def slope(p1, p2):
|
||||
return (p2[1] - p1[1]) / (p2[0] - p1[0]) if p2[0] != p1[0] else float('inf')
|
||||
|
||||
slope1 = slope(diagonal1[0], diagonal1[1])
|
||||
slope2 = slope(diagonal2[0], diagonal2[1])
|
||||
|
||||
# 计算对角线与x轴的夹角(以弧度为单位)
|
||||
angle1_radians = math.atan(slope1)
|
||||
angle2_radians = math.atan(slope2)
|
||||
|
||||
# 将弧度转换为角度
|
||||
angle1_degrees = math.degrees(angle1_radians)
|
||||
angle2_degrees = math.degrees(angle2_radians)
|
||||
|
||||
# 取两条对角线与x轴夹角的平均值
|
||||
average_angle_degrees = abs((angle1_degrees + angle2_degrees) / 2)
|
||||
# logger.info(f"average_angle_degrees: {average_angle_degrees}")
|
||||
return average_angle_degrees
|
||||
|
||||
|
||||
def calculate_is_angle(poly):
|
||||
p1, p2, p3, p4 = poly
|
||||
height = ((p4[1] - p1[1]) + (p3[1] - p2[1])) / 2
|
||||
|
||||
@@ -63,7 +63,7 @@ class ModifiedPaddleOCR(PaddleOCR):
|
||||
|
||||
if det and rec:
|
||||
ocr_res = []
|
||||
for idx, img in enumerate(imgs):
|
||||
for img in imgs:
|
||||
img = preprocess_image(img)
|
||||
dt_boxes, rec_res, _ = self.__call__(img, cls, mfd_res=mfd_res)
|
||||
if not dt_boxes and not rec_res:
|
||||
@@ -75,7 +75,7 @@ class ModifiedPaddleOCR(PaddleOCR):
|
||||
return ocr_res
|
||||
elif det and not rec:
|
||||
ocr_res = []
|
||||
for idx, img in enumerate(imgs):
|
||||
for img in imgs:
|
||||
img = preprocess_image(img)
|
||||
dt_boxes, elapse = self.text_detector(img)
|
||||
if dt_boxes is None:
|
||||
@@ -96,7 +96,7 @@ class ModifiedPaddleOCR(PaddleOCR):
|
||||
else:
|
||||
ocr_res = []
|
||||
cls_res = []
|
||||
for idx, img in enumerate(imgs):
|
||||
for img in imgs:
|
||||
if not isinstance(img, list):
|
||||
img = preprocess_image(img)
|
||||
img = [img]
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
|
||||
from magic_pdf.config.ocr_content_type import BlockType
|
||||
from magic_pdf.libs.boxbase import (
|
||||
calculate_iou, calculate_overlap_area_in_bbox1_area_ratio,
|
||||
calculate_iou,
|
||||
calculate_overlap_area_in_bbox1_area_ratio,
|
||||
calculate_vertical_projection_overlap_ratio,
|
||||
get_minbox_if_overlap_by_ratio)
|
||||
from magic_pdf.pre_proc.remove_bbox_overlap import \
|
||||
remove_overlap_between_bbox_for_block
|
||||
get_minbox_if_overlap_by_ratio
|
||||
)
|
||||
from magic_pdf.pre_proc.remove_bbox_overlap import remove_overlap_between_bbox_for_block
|
||||
|
||||
|
||||
def add_bboxes(blocks, block_type, bboxes):
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
from magic_pdf.config.ocr_content_type import BlockType, ContentType
|
||||
from magic_pdf.libs.boxbase import __is_overlaps_y_exceeds_threshold, calculate_overlap_area_in_bbox1_area_ratio
|
||||
|
||||
@@ -82,14 +81,6 @@ def fill_spans_in_blocks(blocks, spans, radio):
|
||||
if calculate_overlap_area_in_bbox1_area_ratio(
|
||||
span_bbox, block_bbox) > radio:
|
||||
block_spans.append(span)
|
||||
'''行内公式调整, 高度调整至与同行文字高度一致(优先左侧, 其次右侧)'''
|
||||
# displayed_list = []
|
||||
# text_inline_lines = []
|
||||
# modify_y_axis(block_spans, displayed_list, text_inline_lines)
|
||||
'''模型识别错误的行间公式, type类型转换成行内公式'''
|
||||
# block_spans = modify_inline_equation(block_spans, displayed_list, text_inline_lines)
|
||||
'''bbox去除粘连''' # 去粘连会影响span的bbox,导致后续fill的时候出错
|
||||
# block_spans = remove_overlap_between_bbox_for_span(block_spans)
|
||||
|
||||
block_dict['spans'] = block_spans
|
||||
block_with_spans.append(block_dict)
|
||||
@@ -103,9 +94,6 @@ def fill_spans_in_blocks(blocks, spans, radio):
|
||||
|
||||
|
||||
def fix_block_spans_v2(block_with_spans):
|
||||
"""1、img_block和table_block因为包含caption和footnote的关系,存在block的嵌套关系
|
||||
需要将caption和footnote的text_span放入相应img_block和table_block内的
|
||||
caption_block和footnote_block中 2、同时需要删除block中的spans字段."""
|
||||
fix_blocks = []
|
||||
for block in block_with_spans:
|
||||
block_type = block['type']
|
||||
|
||||
Reference in New Issue
Block a user