在python中提取Unicode文本

问题描述

我已通过 OCR 检测到文本为 ¾、½、¼ 等。我试图在 ¾ 中将值分隔为 3 和 4。 ¾ 被读取为 unicode。在转换为字符串时,确切的值随着不需要的字符而变化。请提出解决此问题的方法

解决方法

使用 Unicode Normalization Forms 如下:

import unicodedata
print('NFKD')
print(unicodedata.normalize('NFKD','¾,½,¼'))                  # Fraction Slash
print(unicodedata.normalize('NFKD',¼').replace('⁄','/')) # Solidus
print('NFKC')
print(unicodedata.normalize('NFKC',¼'))
print(unicodedata.normalize('NFKC','/'))

输出:.\SO\67189705.py

NFKD
3⁄4,1⁄2,1⁄4
3/4,1/2,1/4
NFKC
3⁄4,1/4

Table 1. Normalization Forms

Form                           Description
——————————————————————————————————————————
Normalization Form D (NFD)     Canonical Decomposition
Normalization Form C (NFC)     Canonical Decomposition,followed by Canonical Composition
Normalization Form KD (NFKD)   Compatibility Decomposition
Normalization Form KC (NFKC)   Compatibility Decomposition,followed by Canonical Composition