我正在尝试在我的Android应用中使用ML Kit文本识别API。但是它不适用于PDF,我需要一张图像。因此,我正在寻找一种将PDF转换为图像的方法。
我已经尝试了几种解决方案,但其中大多数不再可用。
注意:使用文件选择器在设备上选择PDF文件
private void extractText2(Uri uri) {
try {
Log.e("URI", uri.toString());
FirebaseVisionImage image = FirebaseVisionImage.fromFilePath(getApplicationContext(), uri);
FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance().getOnDeviceTextRecognizer();
Task<FirebaseVisionText> result =
detector.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
displayText(firebaseVisionText);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
} catch (Exception e) {
Log.e("Erreur", e.getMessage());
}
}
private void displayText(FirebaseVisionText result) {
String resultText = result.getText();
Log.e("Text trouvé:",resultText);
}
public void performFileSearch() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, READ_REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent resultData) {
if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri;
if (resultData != null) {
uri = resultData.getData();
Log.i("---", "Uri: " + uri.toString());
extractText2(uri);
}
}
}
上面的代码允许选择图像,然后文本识别效果很好。如果要选择pdf,则必须替换intent.setType(“ image / *”);与intent.setType(“ application / pdf”);但是文本识别API无法正常工作,这就是为什么我需要将所选的pdf文件转换为图像,然后使用文本识别