gpt4 book ai didi

image-processing - 我们可以使用 Palantir Foundry 进行图像处理吗?

转载 作者:行者123 更新时间:2023-12-05 01:12:29 27 4
gpt4 key购买 nike

我正在探索 Palantir Foundry 平台,它似乎有大量矩形数据或结构化数据选项。有没有人有在 Foundry 平台上使用非结构化大数据的经验?我们如何使用 Foundry 进行图像分析?

最佳答案

虽然大多数示例都是使用表格数据给出的,但实际上很多用例都在使用 foundry 进行非结构化和半结构化数据处理。您应该将数据集视为一个文件容器,其中包含用于访问和处理文件的 API。使用文件级 API,您可以访问数据集中的文件并根据需要处理它们。如果这些文件是图像,您可以从文件中提取信息并根据需要使用它。一个常见的用例是将 PDF 作为数据集中的文件,并从 PDF 中提取信息并将其存储为表格信息,以便您可以对其进行结构化和非结构化搜索。

这里是一个提取 PDF 的文件访问示例:

import com.palantir.transforms.lang.java.api.Compute;
import com.palantir.transforms.lang.java.api.FoundryInput;
import com.palantir.transforms.lang.java.api.FoundryOutput;
import com.palantir.transforms.lang.java.api.Input;
import com.palantir.transforms.lang.java.api.Output;
import com.palantir.util.syntacticpath.Paths;
import com.google.common.collect.AbstractIterator;
import com.palantir.spark.binarystream.data.PortableFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.UUID;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;


public final class ExtractPDFText {

private static String pdf_source_files_rid = "SOME RID";
private static String dataProxyPath = "/foundry-data-proxy/api/dataproxy/datasets/";
private static String datasetViewPath = "/views/master/";

@Compute
public void compute(
@Input("/Base/project_name/treasury_pdf_docs") FoundryInput pdfFiles,
@Output("/Base/project_name/clean/pdf_text_extracted") FoundryOutput output) throws IOException {

Dataset<PortableFile> filesDataset = pdfFiles.asFiles().getFileSystem().filesAsDataset();

Dataset<String> mappedDataset = filesDataset.flatMap((FlatMapFunction<PortableFile, String>) portableFile ->
portableFile.convertToIterator(inputStream -> {

String pdfFileName = portableFile.getLogicalPath().getFileName().toString();
return new PDFIterator(inputStream, pdfFileName);
}), Encoders.STRING());

Dataset<Row> dataset = filesDataset
.sparkSession()
.read()
.option("inferSchema", "false")
.json(mappedDataset);

output.getDataFrameWriter(dataset).write();
}

private static final class PDFIterator extends AbstractIterator<String> {
private InputStream inputStream;
private String pdfFileName;
private boolean done;

PDFIterator(InputStream inputStream, String pdfFileName) throws IOException {
this.inputStream = inputStream;
this.pdfFileName = pdfFileName;
this.done = false;
}

@Override
protected String computeNext() {
if (done) {
return endOfData();
}

try {
String objectId = pdfFileName;
String appUrl = dataProxyPath.concat(pdf_source_files_rid).concat(datasetViewPath).concat(pdfFileName);
PDDocument document = PDDocument.load(inputStream);

PDFTextStripper pdfStripper = new PDFTextStripper();

String text = pdfStripper.getText(document);
String strippedText = text.replace("\"", "'").replace("\\", "").replace("“", "'").replace("”", "'").replace("\n", "").replace("\r", "");

done = true;
return "{\"id\": \"" + String.valueOf(UUID.randomUUID()) + "\", \"file_name\": \"" + pdfFileName + "\", \"app_url\": \"" + appUrl + "\", \"object_id\": \"" + objectId + "\", \"text\": \"" + strippedText + "\"}\n";
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}

关于image-processing - 我们可以使用 Palantir Foundry 进行图像处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61889216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com