From 7cc104b138d657df2a58c4c8414183a7c9c458fb Mon Sep 17 00:00:00 2001 From: Jim Barlow Date: Mon, 5 Mar 2018 11:16:40 -0500 Subject: [PATCH] hocr: account for skewed baseline --- .gitignore | 1 + ocrmypdf/hocrtransform.py | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index eeac20e1..14187069 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ tasks.py .bash_history .ruffus_history.sqlite .idea/ +.pytest_cache/ # Package building *.egg-info/ diff --git a/ocrmypdf/hocrtransform.py b/ocrmypdf/hocrtransform.py index 1c35370b..cbbdb27f 100755 --- a/ocrmypdf/hocrtransform.py +++ b/ocrmypdf/hocrtransform.py @@ -33,6 +33,7 @@ from reportlab.lib.units import inch from xml.etree import ElementTree from PIL import Image from collections import namedtuple +from math import atan, sin, cos import re import argparse @@ -238,8 +239,14 @@ class HocrTransform(): baseline = self.baseline(line) if abs(baseline[0]) < 0.005: baseline = (0, baseline[1]) + angle = atan(baseline[0]) + cos_a, sin_a = cos(angle), sin(angle) + + text.setTextTransform( + cos_a, -sin_a, sin_a, cos_a, + pt_line.x1, self.height - pt_line.y2 + ) - text.setTextOrigin(pt_line.x1, self.height - pt_line.y2) elements = line.findall( ".//%sspan[@class='%s']" % (self.xmlns, elemclass)) for elem in elements: