Skip to content

Commit 8eb649c

Browse files
committed
Downsize large images
1 parent 34648c2 commit 8eb649c

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

scripts/deskew.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
from show_baselines_and_textlines import show_baselines_and_textlines
55

66
sys.path.append("../src")
7-
from util import to_binary, deskew
7+
from util import downsize, deskew
88

99

1010
def correct_skew(img_path, output_path):
1111
img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
1212

13+
img = downsize(img)
14+
1315
import time
1416

1517
print("starting deskew")

src/ocr.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,9 @@ def process_image(image, model, metadata, split_lr=False):
212212
def prepare_image(image):
213213
page = PageAnalysis()
214214

215-
angle, corrected = util.deskew(image, limit=5, delta=1)
215+
resized = util.downsize(image)
216+
217+
angle, corrected = util.deskew(resized, limit=5, delta=1)
216218

217219
binary = util.to_binary(corrected)
218220

src/util.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ def gss_max(f, a, b, tolerance=1e-5):
116116
while b - a > tolerance:
117117
c = b - (b - a) * invphi
118118
d = a + (b - a) * invphi
119+
119120
if f(c) > f(d):
120121
b = d
121122
else:
@@ -140,11 +141,20 @@ def determine_score(angle):
140141

141142
best_angle = gss_max(determine_score, lower_limit, upper_limit, 0.1)
142143

143-
(h, w) = binary_image.shape[:2]
144+
(h, w) = img.shape[:2]
144145
center = (w // 2, h // 2)
145146
M = cv2.getRotationMatrix2D(center, best_angle, 1.0)
146147
corrected = cv2.warpAffine(
147148
img, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE
148149
)
149150

150151
return best_angle, corrected
152+
153+
154+
def downsize(image, max_width=2550, max_height=3300):
155+
h, w = image.shape[:2]
156+
if w > max_width or h > max_height:
157+
scaling_factor = min(max_width / w, max_height / h)
158+
new_dimensions = (int(w * scaling_factor), int(h * scaling_factor))
159+
image = cv2.resize(image, new_dimensions, interpolation=cv2.INTER_AREA)
160+
return image

0 commit comments

Comments
 (0)