Optimizes DonutProcessor token2json method for speed
Author: michaelnation26
Pull request: yes

# What does this PR do?

Speeds up the `token2json` method in `DonutProcessor` by calling `self.tokenizer.get_added_vocab()` once and reusing the `added_vocab` results in subsequent recursive calls. 

Fixes # (issue)

[Issue #20238](https://github.com/huggingface/transformers/issues/20238)

The `self.tokenizer.get_added_vocab()` call is somewhat expensive. It takes 50 - 70ms to complete. In the initial implementation of the `token2json` method, `self.tokenizer.get_added_vocab()` is called for every XML tag. If there are 10 XML tags, it would take 500 - 700ms in total. 

This PR makes the `token2json` method run time constant at 50 - 70ms, regardless of the number of XML tags.

## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [x] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
[Issue #20238](https://github.com/huggingface/transformers/issues/20238)
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [x] Did you write any new necessary tests?


## Who can review?

Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

@NielsRogge


Comments:
_The documentation is not available anymore as the PR was closed or merged._

The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_20283). All of your documentation changes will be reflected on that endpoint.

Hi @NielsRogge . Do I need to make any changes to this PR? If not, can I please get an approval so we can merge the PR.

Hi @sgugger and @NielsRogge ,  after updating the `DONUT_PRETRAINED_MODEL_NAME` value and committing, the `check_repository_consistency` was failing on CircleCI so I decided to run `git fetch upstream` and `git rebase upstream/main` by following these [instructions](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#create-a-pull-request). I may have botched the next steps. The git message said my branch diverged. I did a `git pull` and `git config pull.rebase true`, then another `git pull`. Finally, a `git push`. I did not use the `--force` flag. I'm thinking now that I should have since my PR is already open. Now, my PR includes everyone else's changes from the rebase. Do I leave these new changes in my PR or remove them? I only know the basics of Git so I'm not sure what to do next. Also, a couple of tests are now failing that are not related to my changes. Not sure how to resolve those.

Can you fix the last conflict and force-push this time? It might work and remove the huge diff. Otherwise you'll need to close this PR and open a fresh one.