fix parsing spaces in russian language PDFs (#1987) (#2427)
Browse files### What problem does this PR solve?
[#1987](https://github.com/infiniflow/ragflow/issues/1987)
When scanning PDF files character by character, the parser excluded
spaces if the string did not match regex. Text from [Russian
documents](https://github.com/user-attachments/files/16659706/dogovor_oferta.pdf)
needs spaces, but it does not match the regex because it uses different
alphabet. That's why PDFs were parsed incorrectly and were almost
unusable as source. Fixed that by adding Russian alphabet to regex.
There might be problems with other languages that use different
alphabets. I additionally tested [PDF in
Spanish](https://www.scusd.edu/sites/main/files/file-attachments/howtohelpyourchildsucceedinschoolspanish.pdf?1338307816)
and old [a-zA-Z...] regex parses it correctly with spaces.
### Type of change
- [x] Bug Fix (non-breaking change which fixes an issue)
@@ -299,7 +299,7 @@ class RAGFlowPdfParser:
|
|
299 |
self.lefted_chars.append(c)
|
300 |
continue
|
301 |
if c["text"] == " " and bxs[ii]["text"]:
|
302 |
-
if re.match(r"[0-9a-zA-Z
|
303 |
bxs[ii]["text"] += " "
|
304 |
else:
|
305 |
bxs[ii]["text"] += c["text"]
|
|
|
299 |
self.lefted_chars.append(c)
|
300 |
continue
|
301 |
if c["text"] == " " and bxs[ii]["text"]:
|
302 |
+
if re.match(r"[0-9a-zA-Zа-яА-Я,.?;:!%%]", bxs[ii]["text"][-1]):
|
303 |
bxs[ii]["text"] += " "
|
304 |
else:
|
305 |
bxs[ii]["text"] += c["text"]
|