Hyperb0t commited on
Commit
bac5213
·
1 Parent(s): f90339c

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)

Files changed (1) hide show
  1. deepdoc/parser/pdf_parser.py +1 -1
deepdoc/parser/pdf_parser.py CHANGED
@@ -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,.?;:!%%]", bxs[ii]["text"][-1]):
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"]