阅读文本 / Reading text
This paper uses synthetic samples to demonstrate the processing method. The code has been verified using examples in an isolated environment; this does not guarantee effectiveness for all real files or products. Before processing important files, please retain the original copies and verify them against the boundaries and acceptance criteria outlined in this document.
The scanned page appears washed out; increasing the contrast does make it more noticeable, but light-colored stamps and fine lines may also disappear. Preprocessing is not about making the image look “harder”; rather, it aims to preserve useful information for a specific recognition task. Without comparative results, one should not simply equate darker or lighter tones with greater accuracy.
enhancement parameter is not a mass fraction
Pillow's
ImageEnhance.Contrast
Adjusts the contrast based on the parameter. A value of 1 preserves the original image, while other values generate different candidates. It is recommended to retain the original image and a small number of candidates, comparing them using the same OCR configuration, rather than processing the results from the previous round consecutively, which could ultimately lead to a loss of a reproducible starting point.
verifies that the candidate indeed originates from the same original image
from PIL import Image, ImageEnhance
source = Image.new("L", (3, 1))
source.putdata([100, 128, 150])
original = source.tobytes()
identity = ImageEnhance.Contrast(source).enhance(1.0)
candidate = ImageEnhance.Contrast(source).enhance(1.5)
assert identity.tobytes() == original
assert candidate.size == source.size
assert candidate.mode == source.mode
assert source.tobytes() == original
assert candidate.tobytes() != original
This set of grayscale values is the composite input; the assertion only verifies the transformation and non-destructive behavior. It does not include text labels, OCR output, or accuracy statistics. The parameter value of 1.5 is merely for demonstration purposes and is not a recommended setting suitable for all scanners.
Focus on content that is easily damaged
region
Observe during comparison
The choice after failure
light-colored chapter
Do the details disappear?
uses the original image or a milder candidate
table line
Whether there is rupture or adhesion
separates the tabular structure from the textual evaluation
small font
Whether strokes are merged
does not only look at the full-page thumbnail
Background Stain
Whether it has been enhanced
adjusts the local strategy rather than blindly adding contrast to
If you want to discuss the results, prepare annotated samples.
selects representative pages containing text, numbers, tables, and seals, saves the manually verified text, and then compares candidate recognition discrepancies. Even if certain pages improve, this cannot be directly extrapolated to all documents. Without annotations, one can only report visual inspection observations and cannot claim an improvement in recognition accuracy.
The translation workflow requires integrity, not just a clean visual appearance.
uses
OmniDoc (product entry point)
During OCR translation, light-colored annotations may be just as important as the main text. After preprocessing, first verify that this information is still present before evaluating the bilingual output. For delivery purposes, retaining a key negation word or an explanatory seal is more important than achieving a prettier white background.
Reference:
Pillow ImageEnhance
。
- 1 -
Updated 2026-10-08