Closed Desmond9527 closed 2 months ago
此Bug已修复。
混合OCR/原文本
模式下,未考虑页面rotation参数的影响(整页旋转)。
整页强制OCR
模式下,文本块坐标与实际位置不匹配。我是那款软件的作者,感谢大佬开发的插件和算法。文字错位是因为页面旋转,插入内容时会先旋转到0,然后再恢复,增加页面放大系数后返回的坐标如果不做处理,在插入时也会产生偏差,包括文字大小。 可以用fitz自带的page.derotation_matrix 计算旋转坐标,再置入文本,就可以解决这个问题了
protation = page.rotation #获取旋转角度
point = fitz.Point(x, y) * page.derotation_matrix #计算插入点的旋转后的坐标
page.insert_text(
point,
text,
fontsize,
fontname="cjk",
rotate=protation, # 文本角度设定
stroke_opacity=0, # 描边透明度
fill_opacity=0, # 填充(字体)透明度
)
@yangyunlv 感谢建议!用fitz的逆旋转矩阵来求坐标确实简单快速。此 Issue 的问题已解决。
另外,我之前遇到了一份异常PDF,第1页除了旋转,还存在缩放和偏移。我测试了你的软件(v2.4.2),也无法处理第1页。可否一起研究下?
他原先测试用的应该是2.4以下的版本,当时我用的还是pypdf库,有个应用旋转页面的函数[transfer_rotation_to_content]。2.4后的版本引入你的算法后改用了fitz,但旋转问题还没解决。 先研究看看
可能是因为有多个页面对象导致的坐标问题,在页面插入内容之前清理掉就正常了[Page.clean_contents()]
page.clean_contents()
for tb in res["data"]:
................
在页面插入内容之前清理掉就正常了
感谢!有效。整页强制OCR模式下,写入文本位置都是正确的了。但提取原始图片的模式,依然存在 坐标偏移问题 。应该是前期提取时,图片基准坐标不准确。
Umi-OCR version 程序版本
2.1.1
Windows version 系统版本
win11
OCR plugins Used 使用的OCR插件
PaddleOCR
Reproduction steps 复现步骤
这个pdf文件识别时内容提取模式若为混合ocr/原文本,则只能识别出乱码,选择整页强制ocr,可以正常识别文字,但生成双层pdf后,文字层与图片层错位
其他pdf文档识别正常,文档本身为纯图片pdf,推测有其他元素干扰识别,将文档用abbyy另存为纯图片pdf后,使用混合ocr/原文本可以正常识别,但是识别后文字层与图片层还是错位
使用
Problem screenshots or related files (optional) 问题截图或相关文件(可选)
社会学教程(第五版)_9787301317914.pdf
![屏幕截图 2024-04-06 181017](https://github.com/hiroi-sora/Umi-OCR/assets/166215127/e0dd8cec-e357-4758-8aaa-ed1fb7b2935e)