2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Im aktualisierten Inhalt dieses Artikels können Bilder und gescannte PDFs auch die Stapelextraktion bestimmter Bereichsinhalte unterstützen. Dies wird hauptsächlich dadurch erreicht, dass Screenshots des angegebenen Bereichs erstellt und dann OCR verwendet wird, um den Text in dem Bereich zu identifizieren, sodass die Genauigkeit möglicherweise nicht stimmt reicht aus, aber wenn es digital ist, ist es kein großes Problem; daher ist es am besten, die rein elektronische Version der PDF-Datei zu extrahieren, um den besten Effekt zu erzielen.
Anforderung 1: Wenn ich eine große Anzahl elektronischer PDF-Dokumente im gleichen Format habe, muss ich Zahlen oder Text in bestimmten Bereichen extrahieren.
Anforderung 2: Ich habe einen Stapel PDF-Dokumente, aber die Namen der Dateien sind alle verstümmelt. Ich muss diese Dateien basierend auf dem Titeltext der ersten Zeile der ersten Seite der PDF-Datei stapelweise umbenennen.
Hinweis: Nicht geeignet für Szenarien: Wenn die Positionen der Bereiche, die aus mehreren PDF-Dateien extrahiert werden müssen, unterschiedlich sind, beispielsweise die Zahl, die ich extrahieren möchte, an den Koordinaten (30, 30) in der ersten PDF-Datei liegt, und das Ergebnis ändert sich in der zweiten Datei. Wenn es die Koordinate von (35, 35) wird, kann die Software den Inhaltstext nicht sehr gut extrahieren, sodass der Anwendungsbereich dieses Codes auf mehrere PDF-Dokumente beschränkt ist Dasselbe Format und die PDF-Positionen, an denen sich die zu extrahierenden Textinformationen befinden, sind grundsätzlich dieselben.
Idee 1: Wir wählen zufällig eine PDF-Datei als Beispiel aus, markieren dann mithilfe von Code die zu extrahierenden Bereiche mit Kästchen und speichern dann die Koordinaten dieser Bereiche. Bei der stapelweisen Verarbeitung jedes PDFs verwenden wir die gespeicherten Regionalkoordinaten um Text oder Zahlen zu extrahieren, die dem Standort entsprechen
Schematische Darstellung der Ideen:
Das Endergebnisdiagramm:
Die Mängel dieser Idee und Punkte, die Aufmerksamkeit erfordern:
1 Der Speicherort der aus jeder stapelverarbeiteten Datei zu extrahierenden Daten muss derselbe sein. Beispielsweise befindet sich die aus der ersten PDF-Datei zu extrahierende Nummer an den Koordinaten [100, 100], dann die zu extrahierende Nummer Die aus jeder nachfolgenden Datei extrahierten Daten müssen sich an den Koordinaten [100, 100] befinden. Wenn sich diese Position ändert, werden die erforderlichen Daten nicht extrahiert. Dieses Problem kann bis zu einem gewissen Grad durch Erweitern des Koordinatenbereichs gelöst werden.
2. Wenn der extrahierte Text unvollständig ist, bedeutet das, dass das ausgewählte Feld möglicherweise etwas kleiner ist. Ich habe in meinem Code eine Funktion eingerichtet, um die Größe eines bestimmten Bereichs individuell zu erhöhen.
Anforderung 2 Idee: Die Namen eines Stapels von PDF-Dokumenten sind alle verstümmelt. Ich muss diese Dateien basierend auf dem Titel der ersten Seite der PDF-Datei umbenennen PDF-Datei erstellen und dann die erste Zeile des PDF-Inhalts abrufen und die Datei dann umbenennen. Dieser Code ist nicht kompliziert und daher nicht auf dieser Seite enthalten.
Code:
- 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))
Code-Download-Link:
Link: https://pan.baidu.com/s/1WQQ8kaDilaagjoK5IrYZzA
Extraktionscode: 1111