моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
В обновленном содержании этой статьи изображения и отсканированные PDF-файлы также могут поддерживать пакетное извлечение содержимого указанной области. В основном это достигается путем создания снимков экрана указанной области и последующего использования оптического распознавания текста для идентификации текста в этой области, поэтому точность может быть неточной. этого будет достаточно, но если он цифровой, это не большая проблема, поэтому для достижения наилучшего эффекта лучше всего извлечь чисто электронную версию PDF-файла;
Требование 1. Если у меня есть большое количество электронных документов PDF одного формата, мне нужно извлечь числа или текст в определенных областях.
Требование 2. У меня есть пакет PDF-документов, но все имена файлов искажены. Мне нужно пакетно переименовать эти файлы на основе текста заголовка в первой строке первой страницы PDF-файла.
Примечание. Не подходит для сценариев: если расположение областей, которые необходимо извлечь из нескольких файлов PDF, различаются, например, число, которое я хочу извлечь, находится в координатах (30, 30) в первом файле PDF, и результат изменится во втором файле. Если это станет координатой (35, 35), то программное обеспечение не сможет очень хорошо извлечь текст содержимого, поэтому область применения этого кода заключается в том, что несколько PDF-документов имеют тот же формат, и позиции PDF, в которых находится текстовая информация, которую необходимо извлечь, в основном применимы.
Идея 1: Мы случайным образом выбираем PDF-файл в качестве образца, а затем с помощью кода отмечаем области, которые нужно извлечь, прямоугольниками, а затем сохраняем координаты этих областей. При пакетной обработке каждого PDF-файла мы будем использовать сохраненные региональные координаты. для извлечения текста или чисел, соответствующих местоположению
Принципиальная схема идей:
Итоговая диаграмма результатов:
Недостатки этой идеи и моменты, на которые необходимо обратить внимание:
1 Местоположение данных, которые нужно извлечь из каждого файла пакетной обработки, должно быть одинаковым. Например, число, которое нужно извлечь из первого PDF-файла, расположено по координатам [100, 100], затем это число. извлекаемые из каждого последующего файла должны располагаться по координатам [100, 100]. Если эта позиция изменится, необходимые данные не будут извлечены. Эту проблему можно в определенной степени решить, расширив диапазон координат области.
2. Если извлеченный текст неполный, это означает, что выбранное поле может быть немного меньше. Я настроил в своем коде функцию для индивидуального увеличения размера определенной области.
Требование 2. Идея: все имена пакетов PDF-документов искажены. Мне нужно переименовать эти файлы в пакетах на основе названия первой страницы PDF-файла. На самом деле это очень просто. PDF-файл, затем получите первую строку содержимого PDF-файла, а затем переименуйте файл. Этот код не сложен, поэтому он не включен на эту страницу.
Код:
- from typing import Optional, Dict, List
-
- from 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 BaseApi
-
-
-
- class 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 None
-
- def 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 None
-
- def 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_STATS
- res = self._get_request(url)
- return res.get('results') if isinstance(res, dict) else None
-
- def 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_LIST
- res = self._get_request(url)
- return res.get('collections') if isinstance(res, dict) else None
-
- def 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