cleaner.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. """
  2. 文本清洗与纠错
  3. 处理 PDF 提取文本中的格式问题
  4. """
  5. import re
  6. import logging
  7. from typing import Optional
  8. logger = logging.getLogger(__name__)
  9. class TextCleaner:
  10. def __init__(self):
  11. self.replacements = [
  12. (r"(?<!\n)\n(?!\n)", ""), # 移除不当换行
  13. (r"\x00", ""), # 移除空字符
  14. (r"([a-z])\n([a-z])", r"\1\2"), # 英文单词断行连接
  15. (r"(\d)\n(\d)", r"\1\2"), # 数字断行连接
  16. (r"\n{3,}", "\n\n"), # 多个连续换行缩为两个
  17. (r"\t", " "), # 制表符替换
  18. (r" {2,}", " "), # 多个空格缩为一个
  19. ]
  20. def clean(self, text: str) -> str:
  21. result = text
  22. for pattern, replacement in self.replacements:
  23. result = re.sub(pattern, replacement, result)
  24. return result.strip()
  25. def clean_drug_entry(self, text: str) -> str:
  26. cleaned = self.clean(text)
  27. cleaned = self._fix_common_ocr_errors(cleaned)
  28. return cleaned
  29. def _fix_common_ocr_errors(self, text: str) -> str:
  30. ocr_fixes = {
  31. "咤": "啶",
  32. "唾": "唑",
  33. "茶碱": "茶碱",
  34. }
  35. for wrong, correct in ocr_fixes.items():
  36. text = text.replace(wrong, correct)
  37. return text