minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
No conteúdo atualizado deste artigo, imagens e PDFs digitalizados também podem suportar a extração em lote do conteúdo de uma área especificada. Isso é obtido principalmente por meio de capturas de tela da área especificada e, em seguida, usando OCR para identificar o texto na área, portanto, a precisão pode não ser suficiente. será suficiente, mas se for digital, não será um grande problema, então é melhor extrair a versão puramente eletrônica do arquivo PDF para obter o melhor efeito;
Requisito 1: Se eu tiver um grande número de documentos eletrônicos PDF do mesmo formato, preciso extrair números ou texto em áreas específicas.
Requisito 2: Tenho um lote de documentos PDF, mas os nomes dos arquivos estão todos ilegíveis. Preciso renomear esses arquivos em lote com base no texto do título da primeira linha da primeira página do arquivo PDF.
Nota: Não é adequado para cenários: Se as localizações das áreas que precisam ser extraídas de vários arquivos PDF forem diferentes, por exemplo, o número que desejo extrair está nas coordenadas de (30, 30) no primeiro arquivo PDF, e o resultado muda no segundo arquivo Se se tornar a coordenada de (35, 35), então o software não será capaz de extrair o texto do conteúdo muito bem, então o escopo de aplicação deste código é que vários documentos PDF possuem. o mesmo formato, e as posições do PDF onde estão localizadas as informações de texto que precisam ser extraídas são basicamente as mesmas.
Idéia 1: Selecionamos aleatoriamente um arquivo PDF como amostra e, em seguida, usamos o código para marcar as áreas a serem extraídas com caixas e, em seguida, salvamos as coordenadas dessas áreas. Ao processar cada PDF em lotes, usaremos as coordenadas regionais salvas. para extrair texto ou números correspondentes ao local
Diagrama esquemático de ideias:
O diagrama do resultado final:
As falhas dessa ideia e pontos que precisam de atenção:
1 A localização dos dados a serem extraídos de cada arquivo processado em lote precisa ser a mesma. Por exemplo, o número a ser extraído do primeiro arquivo PDF está localizado nas coordenadas [100, 100], depois o número a ser extraído. extraído de cada arquivo subsequente deve estar localizado nas coordenadas [100, 100]. Se esta posição mudar, os dados necessários não serão extraídos. Este problema pode ser resolvido até certo ponto expandindo o intervalo de coordenadas da área.
2. Se o texto extraído estiver incompleto, significa que a caixa selecionada pode ser um pouco menor. Configurei uma função em meu código para aumentar o tamanho de uma determinada área individualmente.
Requisito 2 Idéia: Os nomes de um lote de documentos PDF estão todos distorcidos. Preciso renomear esses arquivos em lotes com base no título da primeira página do arquivo PDF. Arquivo PDF e, em seguida, obtenha a primeira linha do conteúdo do arquivo PDF e renomeie o arquivo. Este código não é complicado, por isso não está incluído nesta página.
Código:
- 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))
Link para download do código:
Link: https://pan.baidu.com/s/1WQQ8kaDilaagjoK5IrYZzA
Código de extração: 1111