diff --git a/llm_web_kit/extractor/html/recognizer/text.py b/llm_web_kit/extractor/html/recognizer/text.py index d4e9e7c7..5196cf73 100644 --- a/llm_web_kit/extractor/html/recognizer/text.py +++ b/llm_web_kit/extractor/html/recognizer/text.py @@ -100,7 +100,24 @@ def __to_cctext_lst(self, lst: List[Tuple[HtmlElement, str]]) -> List[Tuple[str, return new_lst - def __combine_text(self, text1:str, text2:str, lang='en') -> str: + # def __combine_text(self, text1:str, text2:str, lang='en') -> str: + # """将两段文本合并,中间加空格. + # + # Args: + # text1: str: 第一段文本 + # text2: str: 第二段文本 + # lang: str: 语言 TODO 实现根据语言连接文本的不同方式, 还有就是一些特殊符号开头的连接不加空格。 + # """ + # text1 = text1.strip() if text1 else '' + # text2 = text2.strip() if text2 else '' + # if lang == 'zh': + # return text1.strip() + text2.strip() + # else: + # words_sep = '' if text2[0] in string.punctuation or text2[0] in special_symbols else ' ' + # txt = text1 + words_sep + text2 + # return txt.strip() + + def __combine_text(self, text1: str, text2: str, lang='en') -> str: """将两段文本合并,中间加空格. Args: @@ -108,14 +125,57 @@ def __combine_text(self, text1:str, text2:str, lang='en') -> str: text2: str: 第二段文本 lang: str: 语言 TODO 实现根据语言连接文本的不同方式, 还有就是一些特殊符号开头的连接不加空格。 """ - text1 = text1.strip() if text1 else '' - text2 = text2.strip() if text2 else '' + text1 = text1.strip(' ') if text1 else '' + text2 = text2.strip(' ') if text2 else '' if lang == 'zh': - return text1.strip() + text2.strip() + txt = text1 + text2 + return txt.strip().replace('\\r\\n', '\n').replace('\\n', '\n') else: words_sep = '' if text2[0] in string.punctuation or text2[0] in special_symbols else ' ' txt = text1 + words_sep + text2 - return txt.strip() + return txt.strip().replace('\\r\\n', '\n').replace('\\n', '\n') + + # def __get_paragraph_text(self, root: HtmlElement) -> List[dict]: + # """ + # 获取段落全部的文本. + # 对于段落里的行内公式需要特定处理,转换为段落格式: + # [ + # {"c":"content text", "t":"text"}, + # {"c": "equation text", "t":"equation"}, + # {"c":"content text", "t":"text"} + # ] + # + # Args: + # el: 代表一个段落的html元素 + # """ + # para_text = [] + # + # def __get_paragraph_text_recusive(el: HtmlElement, text: str) -> str: + # if el.tag == CCTag.CC_MATH_INLINE: + # if text: + # para_text.append({'c':text, 't':ParagraphTextType.TEXT}) + # text = '' + # para_text.append({'c':el.text, 't':ParagraphTextType.EQUATION_INLINE}) + # elif el.tag == CCTag.CC_CODE_INLINE: + # if text: + # para_text.append({'c':text, 't':ParagraphTextType.TEXT}) + # text = '' + # para_text.append({'c':el.text, 't':ParagraphTextType.CODE_INLINE}) + # else: + # if el.text and el.text.strip(): + # text = self.__combine_text(text, el.text.strip()) + # for child in el.getchildren(): + # text = __get_paragraph_text_recusive(child, text) + # + # if el.tail and el.tail.strip(): + # text = self.__combine_text(text, el.tail.strip()) + # + # return text + # + # if final := __get_paragraph_text_recusive(root, ''): + # para_text.append({'c':final, 't':ParagraphTextType.TEXT}) + # + # return para_text def __get_paragraph_text(self, root: HtmlElement) -> List[dict]: """ @@ -128,34 +188,36 @@ def __get_paragraph_text(self, root: HtmlElement) -> List[dict]: ] Args: - el: 代表一个段落的html元素 + node: 代表一个段落的html元素 """ para_text = [] - def __get_paragraph_text_recusive(el: HtmlElement, text: str) -> str: - if el.tag == CCTag.CC_MATH_INLINE: + def __get_paragraph_text_recusive(node, text): + if node.tag == CCTag.CC_MATH_INLINE: if text: - para_text.append({'c':text, 't':ParagraphTextType.TEXT}) + para_text.append({'c': text, 't': ParagraphTextType.TEXT}) text = '' - para_text.append({'c':el.text, 't':ParagraphTextType.EQUATION_INLINE}) - elif el.tag == CCTag.CC_CODE_INLINE: + para_text.append({'c': node.text, 't': ParagraphTextType.EQUATION_INLINE}) + elif node.tag == CCTag.CC_CODE_INLINE: if text: - para_text.append({'c':text, 't':ParagraphTextType.TEXT}) + para_text.append({'c': text, 't': ParagraphTextType.TEXT}) text = '' - para_text.append({'c':el.text, 't':ParagraphTextType.CODE_INLINE}) + para_text.append({'c': node.text, 't': ParagraphTextType.CODE_INLINE}) + elif node.tag in ['br']: # 处理特定标签以保持格式 + text += "\n" else: - if el.text and el.text.strip(): - text = self.__combine_text(text, el.text.strip()) - for child in el.getchildren(): + if node.text and node.text.strip(): # 如果有非空白文本 + text = self.__combine_text(text, node.text.strip()) + for child in node: text = __get_paragraph_text_recusive(child, text) - if el.tail and el.tail.strip(): - text = self.__combine_text(text, el.tail.strip()) + if node.tail and node.tail.strip(): # 如果有尾随文本 + text = self.__combine_text(text, node.tail.strip()) return text if final := __get_paragraph_text_recusive(root, ''): - para_text.append({'c':final, 't':ParagraphTextType.TEXT}) + para_text.append({'c': final, 't': ParagraphTextType.TEXT}) return para_text diff --git a/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/text.html b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/text.html new file mode 100644 index 00000000..246702a9 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/assets/recognizer/text.html @@ -0,0 +1,7387 @@ +"html_source": " + + + + + + + + + + + + + + + + + + + + 美国营运库存月率月度八月-2020年10月16日全球经济日历 - 知识是一种生活方式 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
搜索
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+
知识是一种生活方式
+
+ + + + + +
+
+
+
+
夜间模式暗黑模式
+
+
+
字体
+
+ +
+
+
阴影
+
+ +
+
+
滤镜
+
+ + + + +
+
+
圆角
+
+
+
+
主题色
+
+
+
+
+
+ + +
+
+
+
标签
+ +
+
2019 1AI 1algorithm + 1Anaconda + 1API + 1A股 + 1BERT + 2christinelagarde 1cpi 9curl + 1docker + 3eia + 2gdp + 6git + 1iptables + 1keras + 1markit + 4mediawiki + 0mi + 1mysql + 4numba + 1ocr + 1pmi + 2pyspider + 2python + 4QE + 1splash + 7squad + 1steam + 1td + 1tensorflow + 2tesseract + 1TextRank + 1web.py + 1七月 18上半年 + 1上市公司 + 2世界货币 + 1中国 97中国人民志愿军 1中国共产党 1主席 3乌兰牧骑 + 1九月 23习近平 + 4乡村 1五月 32京津冀 1人们 2人工智能 + 1人民 11人民币 + 3人民政协 + 1今天 1仓位 42代表 1价格 1价格锚定 + 1企业 17企业价值 + 1伊朗 2估值 1保护 1信息 1债务周期 + 1光暗 1党中央 + 1全国 4全球 6全球价值链 1全球故事 + 0全球股市 + 1全面 3八月 22公司 1六月 26关税 1关键词 + 1养老 1农村 1决定 1分工 1刘鹤 1创新 2利率 1制造业 + 7加密货币 + 1加强 3加息 1加拿大 3北京 1北斗 1医保 1医院 1十月 24协商 1单车 1印度 7印度尼西亚 2危机 1历史 1原油 3参加 1发展 122取词 1右玉 1合作 8合作社 + 1周评 1商业活动 + 1商品 2固定资产 + 1国家 44国际 7国际观察 + 2国际贸易P2P + 1国际金融 + 1地区 1坚持 2城乡融合 + 1城市 3域名 1墨西哥 11外汇 1外汇储备 + 1大数据 1央行 8奋斗 1委员 2委员会 1孙景坤 + 1季率 5孩子 1安全 2宗教 1官兵 1官兵们 + 1官方 1实现 3审议 2宪法 1寒冬将至 + 1小吃 1少先队 + 1就业 5山西 1工作 42巴西 8市场 3平台 1年度 4年率 591应用 1建议 1建设 27形势 1徐振明 + 1德国 2心之力 + 1心学 1总书记 + 1总数 1战略 2房地产 1扶贫 1投资总额 + 1抗美援朝 + 1报告 1押金 1拉加 2拍卖 8指数 64推动 4提供 1支持 4收入分配 + 1收支平衡 + 1改革 3政治 2教育 1数字经济 + 1数据分析 + 2文化 2文化遗产 + 1新增 3新疆 2新西兰 3新闻 1新闻联播 + 257旅游 2日本 10日本央行 + 1智慧企业 + 1月度 2月率 24服务 3服务业 + 1服务器 1机制 1机器学习 + 2机场 1村民 2杜甫 1杨根思 + 1欧元区 3正在 1比索 1毕业生 + 1民宿 1民法典 + 3汇率对 1沙县 1法律 1法治 1洱海 1活动 1海洋 1消费 1消费者 1深圳 2游客 3湖北 1溜索 1澳大利亚 + 2焦点 1物价指数 + 1玉麦 1王阳明 + 1生产 2生态 1电缆 1疫情 45疫苗 1病例 1监督 2相关 1知识 2知识产权 + 2示威者 1社会 2社区 3神经网络 + 1种子 1科技 1端午 1第一季度 + 3算法 3经济 23经济特区 + 1美元 1美元计价 + 1美国 217群众 1老人 1考评 0考评体系 + 2职业院校 + 1联储 2能力 1脱贫 2自由主义 + 1英国 12英雄 1行业 1行长 3表示 5被利用 + 1训练 1讲话 27诗人 1语言学习 + 1财政 1财政政策 + 3财经日历 + 230货币 9货币政策 + 8贸易 4进行 5量子 1金融 9金融市场 + 1钻井 12铁路 3长三角 1长江 1问题 3防控 3防汛 2防火墙 + 1零售 1韩国 1香包 1香港 17香港特别行政区 1马云 1高铁 1魏杰 1黄花 1
+
+
+
+
+
+ + +
美国营运库存月率月度八月-2020年10月16日全球经济日历 +
+
+
+
|
+
270 +
+
|
+
0 +
+
|
+
+
2793 字
+
|
+
13 分钟
+

美国营运库存月率月度八月

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
时间国家事件完成值预测值前值
22:00美国美国营运库存月率(%)(月度)(八月)0.3%-5.5%0.4%
22:00美国美国除汽车外零售库存(八月)0.5%0.9%
22:00美国美国营运库存月率(%)(月度)(八月)0.1%0.4%
22:00美国美国密歇根大学现况指数(十月)87.888.5
22:00美国美国密歇根大学消费者信心指数(十月)80.480.5
22:00美国美国密歇根大学消费者预期指数(十月)75.676.5
22:00美国美国营运库存月率(%)(月度)(八月)0.1%-5.5%0.4%
22:00美国美国密歇根大学消费者信心指数(十月)80.481.0
22:00美国美国密歇根大学现况指数(十月)84.987.888.5
22:00美国美国密歇根大学消费者信心指数(十月)81.280.480.5
22:00美国美国密歇根大学消费者预期指数(十月)78.875.676.5
22:00美国美国密歇根大学5-10年期通胀率预期(%)(十月)2.40%2.70%
22:00美国美国密歇根大学1年期通胀率预期(十月)2.7%2.6%
21:15美国美国产能利用率(%)(九月)71.5%72.0%71.9%
21:15美国美国工业产出月率(%)(月度)(九月)-0.6%0.4%0.5%
21:15美国美国制造业产出月率(%)(月度)(九月)-0.3%1.2%0.7%
21:15美国美国工业产出月率(%)(月度)(九月)0.4%0.5%
21:15美国美国工业产出年率(%)(年度)(九月)-7.28%-7.01%
21:15美国美国制造业产出月率(%)(月度)(九月)1.0%0.7%
20:30美国美国核心零售销售月率(%)(月度)(九月)0.7%0.5%
20:30美国美国零售销售月率(%)(月度)(九月)0.6%0.7%
20:30加拿大加拿大制造业装船月率(%)(月度)(八月)7.0%-1.4%
20:30美国美国零售业预期月率(%)(月度)(九月)-0.1%0.3%
20:30加拿大加拿大制造业装船月率(%)(月度)(八月)7.0%-2.0%
20:30美国美国零售业预期月率(%)(月度)(九月)-0.1%0.2%
20:30美国美国零售销售年率(年度)(九月)5.36%2.77%
20:30加拿大加拿大制造业装船月率(%)(月度)(八月)-2.0%7.2%-1.4%
20:30加拿大加拿大海外投资者净买入加拿大证券(加元)(八月)15.50B-8.49B
20:30美国美国零售业预期月率(%)(月度)(九月)1.4%-0.3%0.2%
20:30美国美国核心零售销售月率(%)(月度)(九月)1.5%0.5%0.5%
20:30美国美国除去天然气与汽车零售销售月率(%)(月度)(九月)1.5%0.5%
20:30美国美国零售销售月率(%)(月度)(九月)1.9%0.6%0.7%
20:30加拿大加拿大投资者净买入海外证券(加元)(八月)5.74B1.31B
20:20印度印度出口额(美元)(九月)22.70B
20:20印度印度进口额(美元)(九月)29.47B
20:20印度印度贸易帐(卢比)(九月)6.77B3.30B
19:30印度印度外汇储备(美元)551.51B545.64B
17:00欧元区欧元区贸易帐(欧元)(八月)14.7B27.7B15.1B
17:00欧元区欧元区CPI月率(%)(月度)(九月)0.1%-0.4%0.1%
17:00欧元区欧元区不包括能源和食品HICP年率(年度)(九月)0.4%0.4%0.4%
17:00欧元区欧元区不包括能源和食品HICP年率(年度)(九月)0.4%0.4%
17:00欧元区欧元区CPI年率(%)(年度)(九月)-0.3%-0.3%
17:00欧元区欧元区未季调核心CPI年率(年度)(九月)0.2%0.2%
17:00欧元区欧元区CPI年率(%)(年度)(九月)-0.3%-0.3%-0.3%
17:00欧元区欧元区剔除烟草CPI年率(%)(年度)(九月)-0.5%-0.3%
17:00欧元区欧元区贸易帐(欧元)(八月)27.9B15.1B
17:00欧元区欧元区剔除烟草CPI月率(%)(月度)(九月)0.1%-0.4%
17:00欧元区欧元区未季调核心CPI年率(年度)(九月)0.2%0.2%0.2%
17:00欧元区欧元区核心CPI月率(%)(月度)(九月)0.2%0.2%0.2%
17:00意大利意大利对欧盟贸易帐(欧元)(八月)0.35B3.00B
17:00意大利意大利贸易帐(亿欧元)(八月)3.928B9.689B
17:00欧元区欧元区贸易帐(欧元)(八月)14.7B27.9B15.1B
17:00欧元区欧元区不包括能源和食品HICP月率(月度)(九月)0.1%-0.5%0.1%
16:37中国中国实际外商直接投资年率(%)(九月)5.20%2.60%
16:00意大利意大利调和CPI年率(%)(年度)(九月)-1.0%-0.9%-0.9%
16:00意大利意大利调和CPI月率(%)(月度)(九月)0.9%1.0%1.0%
16:00意大利意大利CPI年率(%)(年度)(九月)-0.6%-0.5%-0.5%
16:00意大利意大利CPI月率(%)(月度)(九月)-0.7%-0.6%-0.6%
16:00意大利意大利不包括烟草CPI月率(月度)(九月)-0.6%-0.7%
16:00意大利意大利CPI月率(%)(月度)(九月)-0.6%-0.6%
14:00英国英国新车登记数月率(月度)(九月)276.1%-50.1%
14:00法国法国新车登记数月率(年度)(九月)-3.0%-19.8%
14:00法国法国新车登记数月率(月度)(九月)62.4%-42.1%
14:00德国德国新车登记数月率(月度)(九月)5.6%-20.3%
14:00德国德国新车登记数月率(年度)(九月)8.4%-20.0%
14:00意大利意大利新车登记数月率(月度)(九月)75.8%-35.0%
14:00意大利意大利新车登记数月率(年度)(九月)9.5%-0.4%
14:00英国英国新车登记数月率(年度)(九月)-4.4%-5.8%
10:00新西兰新西兰政府债券海外投资者所持比例(%)(九月)41.70%41.90%
10:00日本日本汤森路透/益普索主要消费者信心指数(十月)39.5436.72
10:00中国中国汤森路透/益普索主要消费者信心指数(十月)78.7966.69
08:30新加坡新加坡贸易帐(新加坡元)3.100B5.800B
08:30新加坡新加坡非石油出口额月率(%)(月度)(九月)-11.30%10.50%-3.00%
08:30新加坡新加坡非石油出口额月率(%)(月度)(九月)10.50%-3.00%
08:30新加坡新加坡非石油出口额年率(%)(年度)(九月)7.70%10.80%
08:30新加坡新加坡非石油出口额年率(%)(年度)(九月)5.90%7.70%10.80%
08:00澳大利亚澳大利亚HIA新屋销售月率(%)(月度)-14.4%
08:00澳大利亚澳大利亚HIA新屋销售月率(%)(月度)3.8%3.6%
07:00韩国韩国失业率(九月)3.9%3.2%
05:30新西兰新西兰制造业PMI(九月)54.050.7
05:00美国美国证监会卡什卡利(Kashkari)讲话
05:00韩国韩国出口物价指数年率(%)(年度)(九月)-6.2%-6.7%
05:00韩国韩国进口物价指数年率(%)(年度)(九月)-11.5%-10.5%
01:38印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-22.40%
01:38印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B1.98B
01:38印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B2.16B
01:38印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-20.58%
01:38印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-5.79%
01:38印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-7.20%
01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)1.06%2.15%1.60%
01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)1.06%2.15%1.60%
01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)2.15%1.60%
01:00巴西巴西中央银行经济活动指数(IBC-Br)(%)(八月)1.06%2.15%1.60%
00:58印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-5.79%
00:58印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-20.58%
00:58印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B2.16B
00:41印度尼西亚印度尼西亚进口增长年率(%)(年度)(九月)-24.19%-20.58%
00:41印度尼西亚印度尼西亚出口增长年率(%)(年度)(九月)-8.36%-5.79%
00:41印度尼西亚印度尼西亚贸易帐(卢比)(九月)2.33B2.16B
00:00欧元区欧洲央行行长拉加德(ChristineLagarde)讲话
+

相关文章链接:

+

知识乱象
中共中央政治局召开会议审议《成-2020年10月16日新闻联播
美国四周期国债拍卖-2020年10月15日全球经济日历
习近平在广东考察时强调以更大魄-2020年10月15日新闻联播

+
+ + + +
+ + + + + \n\n\n\n", diff --git a/tests/llm_web_kit/extractor/html/recognizer/test_text.py b/tests/llm_web_kit/extractor/html/recognizer/test_text.py new file mode 100644 index 00000000..cb2692a8 --- /dev/null +++ b/tests/llm_web_kit/extractor/html/recognizer/test_text.py @@ -0,0 +1,11 @@ +# 测试text识别器 +import os +from llm_web_kit.extractor.html.recognizer.text import TextParagraphRecognizer + + +def test_text_recognizer(): + with open(f'{os.path.dirname(os.path.abspath(__file__))}/assets/recognizer/text.html', 'r') as file: + html_content = file.read() + + result = TextParagraphRecognizer().recognize('http://www.baidu.com', [(html_content, html_content)], html_content) + assert result[909][0][1413:1422] == '知识乱象\\n 中共'