网站微信分享链接怎么做的,安卓网站开发前景,成都住建局官网怎么查新房备案,连江网站建设服务本次文章更新内容#xff0c;图片以及扫描的PDF也可以支持批量提取指定区域内容了#xff0c;主要是通过截图指定区域#xff0c;然后使用OCR来识别该区域的文字来实现的#xff0c;所以精度可能会有点不够#xff0c;但是如果是数字的话#xff0c;问题不大#xff1b;…本次文章更新内容图片以及扫描的PDF也可以支持批量提取指定区域内容了主要是通过截图指定区域然后使用OCR来识别该区域的文字来实现的所以精度可能会有点不够但是如果是数字的话问题不大 所以最好还是纯电子版本的PDF文件提取效果最好。 需求1假如我有一批数量比较多的同样格式的PDF电子文档需要把特定多个区域的数字或者文字提取出来
需求2我有一批PDF文档但是文件的名称都是一些乱码我需要根据PDF文件里面第一页内容的第一行的标题文字来批量重命名这些文件 说明不适应场景如果多个PDF文件的需要提取内容的区域的位置不一样比如我要提取的数字在第一个PDF文件在3030的坐标结果在第二个文件变成了3535这个坐标那么软件就会无法很好的提取这个内容文本所以这个代码的适用范围是多个PDF文档格式一致并且需要提取的文本信息所在的PDF位置都基本一样的情况下适用。 思路1我们任意选一个PDF文件作为样本然后用代码把要提取的区域用方框标注出来再然后把这些区域的坐标保存下来后续批量处理每个PDF的时候就根据保存的这些区域坐标来提取对应位置的文字或者数字
思路示意图 最后的结果示意图 这种思路的缺陷和需要注意的点
1 需要每个批量处理的文件要提取的数据的位置都是一样的比如第一个PDF文件需要提取的数字位于【100100】这个坐标那么后续每个文件需要提取的数字都要位于这个位置如有变动就会导致提取不到需要的数据可以通过扩大区域的坐标范围来一定程度上的解决这个问题
2 如果提取的文字不齐全说明可能框选的方框略微小了一点我代码里面设置了一个单独增大某个区域的功能 需求2思路一批PDF文档的名称都是一些乱码我需要根据PDF文件里面第一页内容的标题来批量重命名这些文件实际上很简单就是解析PDF文件然后获取第一行的内容然后重命名该文件即可这个代码不复杂就没放在本页了。 代码
from typing import Optional, Dict, Listfrom solapi.magic_eden.site_api.utils.consts import MEAPIUrls
from solapi.magic_eden.site_api.utils.data import collection_stats_cleaner, collection_info_cleaner, \collection_list_stats_cleaner
from solapi.magic_eden.site_api.utils.types import MECollectionStats, MECollectionInfo, MECollectionMetrics
from solapi.utils.api import BaseApiclass MagicEdenCollectionApi(BaseApi):def get_collection_stats_dirty(self, symbol: str) - Optional[Dict]:url f{MEAPIUrls.COLLECTION_STATS}{symbol}res self._get_request(url)return res.get(results) if isinstance(res, dict) else Nonedef get_collection_info_dirty(self, symbol: str) - Optional[Dict]:url f{MEAPIUrls.COLLECTION_INFO}{symbol}res self._get_request(url)return res if bool(res) else Nonedef get_collection_stats(self, symbol: str) - Optional[MECollectionStats]:data self.get_collection_stats_dirty(symbol)if data:return collection_stats_cleaner(data)def get_collection_info(self, symbol: str) - Optional[MECollectionInfo]:data self.get_collection_info_dirty(symbol)if data:return collection_info_cleaner(data)def get_collection_list_stats_dirty(self):url MEAPIUrls.COLLECTION_LIST_STATSres self._get_request(url)return res.get(results) if isinstance(res, dict) else Nonedef get_collection_list_stats(self) - Optional[List[MECollectionMetrics]]:data self.get_collection_list_stats_dirty()if data:return list(map(lambda x: collection_list_stats_cleaner(x), data))def get_collection_list_dirty(self):url MEAPIUrls.COLLECTION_LISTres self._get_request(url)return res.get(collections) if isinstance(res, dict) else Nonedef get_collection_list(self) - Optional[List[MECollectionInfo]]:data self.get_collection_list_dirty()if data:return list(map(lambda x: collection_info_cleaner(x), data)) 代码下载链接
链接https://pan.baidu.com/s/1WQQ8kaDilaagjoK5IrYZzA
提取码1111