내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
이 기사의 업데이트된 콘텐츠에서는 사진과 스캔한 PDF도 지정된 영역 콘텐츠의 일괄 추출을 지원할 수 있습니다. 이는 주로 지정된 영역의 스크린샷을 찍은 다음 OCR을 사용하여 해당 영역의 텍스트를 식별하는 방식으로 수행되므로 정확성이 떨어질 수 있습니다. 충분하지만 디지털이라면 큰 문제가 되지 않으므로 최상의 효과를 위해서는 PDF 파일의 순수 전자 버전을 추출하는 것이 가장 좋습니다.
요구 사항 1: 동일한 형식의 PDF 전자 문서가 많은 경우 특정 영역의 숫자나 텍스트를 추출해야 합니다.
요구 사항 2: PDF 문서 묶음이 있는데 파일 이름이 모두 깨졌습니다. PDF 파일 첫 페이지의 첫 번째 줄 제목 텍스트를 기준으로 파일 이름을 일괄 변경해야 합니다.
참고: 시나리오에는 적합하지 않습니다. 여러 PDF 파일에서 추출해야 하는 영역의 위치가 다른 경우, 예를 들어 추출하려는 숫자가 첫 번째 PDF 파일의 (30, 30) 좌표에 있고, 두 번째 파일에서 결과가 변경됩니다. (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